sistema de pedidos para representantes de...
TRANSCRIPT
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIAS DA COMPUTAÇÃO – BACHARELADO
SISTEMA DE PEDIDOS PARA REPRESENTANTES DE
CONFECÇÕES
DIONES ALEX DE SOUZA
BLUMENAU
2008
2008/2-07
DIONES ALEX DE SOUZA
SISTEMA DE PEDIDOS PARA REPRESENTANTES DE
CONFECÇÕES
Trabalho de Conclusão de Curso submetido à
Universidade Regional de Blumenau para a
obtenção dos créditos na disciplina Trabalho
de Conclusão de Curso II do curso de Ciências
da Computação — Bacharelado.
Prof. Evaristo Baptista - Orientador
BLUMENAU
2008
2008/2-07
SISTEMA DE PEDIDOS PARA REPRESENTANTES DE
CONFECÇÕES
Por
DIONES ALEX DE SOUZA
Trabalho aprovado para obtenção dos créditos
na disciplina de Trabalho de Conclusão de
Curso II, pela banca examinadora formada
por:
______________________________________________________
Presidente: Prof. Evaristo Baptista - Orientador, FURB
______________________________________________________
Membro: Prof. Everaldo Artur Grahl, Mestre – FURB
______________________________________________________
Membro: Prof. Ricardo de Alencar Azambuja, Mestre – FURB
Blumenau, 18 de março de 2009
Dedico este trabalho a minha mãe Maria José
Ferreira que faleceu no dia da entrega do meu
trabalho, mas que sempre estará vivendo em
meu coração.
AGRADECIMENTOS
A senhor Deus, para sua glória.
Ao meu pai Alexandre e principalmente minha mãe Maria José, que faleceu no dia da
entrega deste trabalho.
Aos meus amigos, Jhony e Carlos que incentivaram e torceram por mim. Em especial
ao meu amigo Dalmir que proporcionou todo apoio para realização do trabalho.
Ao meu orientador, Evaristo Baptista, que teve grande perseverança na conclusão deste
trabalho.
Nada é impossível para aquele que persiste.
Alexandre, o Grande
RESUMO
Este trabalho apresenta um sistema de pedidos para representantes, implementado em duas
plataformas: Windows e Linux utilizando a ferramenta Open Source Lazarus/ Free Pascal. A
aplicação possibilita a coleta de pedidos e a transmissão de dados através de arquivos XML,
visando auxiliar a troca de informações e aplicando o conceito de Balanced Scorecard para
acompanhamento do desempenho do representante.
Palavras-chave: Transmissão de dados com XML. Balanced Scorecard.
ABSTRACT
This paper presents a system of applications for agents, implemented in two platforms:
Windows and Linux using the tools Open Source Lazarus / Free Pascal. The application
allows the collection of applications and data transmission via XML files, to help the
exchange of information and applying the concept of Balanced Scorecard to monitor the
performance of the representative.
Key-words: Transmission of data with XML. Balanced Scorecard.
LISTA DE ILUSTRAÇÕES
Figura 1 – Perspectivas do Balanced ScoreCard ..................................................................... 19
Quadro 1 – Perspectiva de clientes do Balanced ScoreCard ................................................... 20
Figura 2 – Estrutura de medição do aprendizado e crescimento Balanced ScoreCard ............ 21
Quadro 2 – Exemplo de um arquivo XML ............................................................................... 23
Quadro 3 – Procedimentos para compilar um programa de Windows para Linux .................. 26
Quadro 4 – Requisitos Funcionais ............................................................................................ 31
Quadro 5 – Requisitos Não Funcionais .................................................................................... 31
Figura 3 – Visão geral do sistema ............................................................................................ 32
Figura 4 – Diagrama de casos de uso (Cadastros) .................................................................... 33
Figura 5 – Diagrama de casos de uso (Consultas) .................................................................... 33
Figura 6 – Diagrama de casos de uso das tabelas de apoio (Consultas) ................................... 34
Figura 7 – Diagrama de casos de uso Retaguarda .................................................................... 34
Figura 8 – Descrição de casos de uso cadastrar clientes .......................................................... 35
Figura 9 – Descrição de casos de uso digitar pedidos .............................................................. 35
Figura 10 – Descrição de casos de uso gerar gráfico BSC ....................................................... 36
Figura 11 – Descrição de casos de uso consultar BSC ............................................................. 36
Figura 12 – Descrição de casos de uso consultar faturamento ................................................. 36
Figura 13 – Descrição de casos de uso consultar títulos pendentes ......................................... 37
Figura 14 – Descrição de casos de uso consultar tabela de preço ............................................ 37
Figura 15 – Descrição de casos de uso consultar comissões .................................................... 37
Figura 16 – Descrição de casos de uso consultar transportadoras ............................................ 38
Figura 17 – Descrição de casos de uso consultar condições de pagamento ............................. 38
Figura 18 – Descrição de casos de uso consultar produtos ...................................................... 38
Figura 19 – Descrição de casos de uso importar ...................................................................... 39
Figura 20 – Descrição de casos de uso exportar ....................................................................... 39
Figura 21 – Diagrama de classes .............................................................................................. 40
Figura 22 – Diagrama de entidade e relacionamentos (DER) .................................................. 41
Quadro 6 – Dicionário de dados – BSC ................................................................................... 42
Quadro 7 – Dicionário de dados – Comissões .......................................................................... 42
Quadro 8 – Dicionário de dados – Condição de pagamento .................................................... 42
Quadro 9 – Dicionário de dados – Parcelas da condição de pagamento .................................. 42
Quadro 10 – Dicionário de dados – Clientes ............................................................................ 43
Quadro 11 – Dicionário de dados – Itens do faturamento ........................................................ 43
Quadro 12 – Dicionário de dados – Faturamentos ................................................................... 44
Quadro 13 – Dicionário de dados – Pedidos ............................................................................ 44
Quadro 14 – Dicionário de dados – Itens do pedido ................................................................ 44
Quadro 15 – Dicionário de dados – Produtos ........................................................................... 45
Quadro 16 – Dicionário de dados – Tabela de preços .............................................................. 45
Quadro 17 – Dicionário de dados – Títulos .............................................................................. 45
Quadro 18 – Dicionário de dados – Transportadoras ............................................................... 45
Figura 23 – Sistema compilado em duas plataformas: Windows e Linux ............................... 46
Figura 24 – Cadastro de Clientes .............................................................................................. 47
Figura 25 – Cadastro de Pedidos - Cabeçalho .......................................................................... 48
Figura 26 – Cadastro de Pedidos – itens .................................................................................. 48
Figura 27 – Cadastro de Pedidos – Observações ...................................................................... 49
Figura 28 – Cadastro do Balanced ScoreCard - Cabeçalho ..................................................... 49
Figura 29 – Cadastro do Balanced ScoreCard - Ações ............................................................ 50
Figura 30 – Cadastro do Balanced ScoreCard - Indicadores ................................................... 50
Quadro 19 – Explicações sobre os campos do cadastro do BSC.............................................. 51
Figura 31 – Consulta de títulos ................................................................................................. 52
Figura 32 – Consulta de faturamento - Cabeçalho ................................................................... 53
Figura 33 – Consulta de faturamento - itens............................................................................. 53
Figura 34 – Consulta de produtos ............................................................................................. 54
Figura 35 – Consulta de tabela de preço................................................................................... 54
Figura 36 – Consulta de comissões .......................................................................................... 55
Figura 37 – Consulta de condições de pagamentos .................................................................. 55
Figura 38 – Consulta de transportadoras .................................................................................. 56
Figura 39 – Consulta de Balanced Scorecard .......................................................................... 56
Figura 40 – Gráfico de Balanced ScoreCard ........................................................................... 57
Figura 41 – Módulo de retaguarda ........................................................................................... 57
Quadro 20 – Classe DAOGeral – Cliente e busca de dados ..................................................... 71
Quadro 21 – Script de banco de dados - tabela de clientes ...................................................... 72
Quadro 22 – Script de banco de dados - tabela de condição de pagamento ............................. 72
Quadro 23 – Script de banco de dados - tabela de pedidos ...................................................... 73
Quadro 24 – Script de banco de dados - tabela de faturamento ............................................... 74
Quadro 25 – Script de banco de dados - tabela de titulos......................................................... 74
Quadro 26 – Script de banco de dados - tabela de comissão .................................................... 75
Quadro 27 – Script de banco de dados - tabela de produtos e tabela de preços ....................... 75
Quadro 28 – Script de banco de dados - tabela de transportadora ........................................... 75
Quadro 29 – Script de banco de dados - tabela de BSC. .......................................................... 76
Quadro 30 – Script de banco de dados - chaves primárias ....................................................... 77
Quadro 31 – Arquivo XML de clientes ..................................................................................... 78
Quadro 32 – Arquivo XML de pedidos ..................................................................................... 79
LISTA DE SIGLAS
BCC – Curso de Ciências da Computação – Bacharelado
BSC – Balanced ScoreCard
DAO – Data Access Object
DRA – Desenvolvimento Rápido de Aplicações
FPC – Free Pascal Compiler
FPL - Free Pascal Lazarus
FTP – File Transfer Protocol
IDE – Integrated Development Environment
LCL - Lazarus Component Library
POO – Programação Orientada a Objetos
SQL – Structured Query Language
TQM – Total Quality Management
UML – Unified Modeling Language
XML - eXtensible Markup Language
SUMÁRIO
1 INTRODUÇÃO .................................................................................................................. 14
1.1 OBJETIVOS DO TRABALHO ........................................................................................ 15
1.2 ESTRUTURA DO TRABALHO ...................................................................................... 15
2 FUNDAMENTAÇÃO TEÓRICA .................................................................................... 17
2.1 VENDA POR PEDIDO ..................................................................................................... 17
2.2 BALANCED SCORECARD ............................................................................................ 18
2.2.1 Perspectiva Financeira ..................................................................................................... 19
2.2.2 Perspectiva Cliente .......................................................................................................... 20
2.2.3 Perspectiva Processos internos ........................................................................................ 20
2.2.4 Perspectiva Aprendizado e Crescimento ......................................................................... 21
2.3 XML .................................................................................................................................. 22
2.4 LAZARUS E FREE PASCAL .......................................................................................... 23
2.5 BANCO DE DADOS FIREDIRD..................................................................................... 27
2.6 DAO .................................................................................................................................. 27
2.7 TRABALHOS CORRELATOS ........................................................................................ 28
3 DESENVOLVIMENTO .................................................................................................... 30
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO ....................... 30
3.2 ESPECIFICAÇÃO ............................................................................................................ 32
3.3 IMPLEMENTAÇÃO ........................................................................................................ 45
3.3.1 Ferramenta Lazarus e o compilador Free Pascal............................................................. 46
3.3.2 Balanced ScoreCard ........................................................................................................ 46
3.3.3 Operacionalidade da implementação .............................................................................. 47
3.3.3.1 Cadastros do sistema ..................................................................................................... 47
3.3.3.2 Consultas do Sistema .................................................................................................... 51
3.3.3.3 Consultas e gráfico do BSC .......................................................................................... 56
3.4 RESULTADOS E DISCUSSÃO ...................................................................................... 58
4 CONCLUSÕES .................................................................................................................. 59
4.1 EXTENSÕES .................................................................................................................... 59
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 61
APÊNDICE A – Classe DAOGeral – parte do código referente a classe de clientes e das
buscas na tabela. ..................................................................................................................... 63
APÊNDICE B – Script para geração do banco de dados Firebird .................................... 72
APÊNDICE C – Arquivos XML de clientes e pedidos ........................................................ 78
14
1 INTRODUÇÃO
Os sistemas de vendas são responsáveis pelo registro das vendas dos produtos ou
serviços de uma organização. Dedicam-se a contatar clientes, oferecer produtos e serviços,
fechar pedidos e acompanhar vendas, esta atividade está subdivida em quatro níveis:
operacional, conhecimento, gerencial e estratégico. O nível operacional dedica-se aos
trabalhos de preparação, fechamento e acompanhamento das vendas e necessita de novas
ferramentas para auxiliar no rendimento e agilidade destas funções (LAUDON; LAUDON,
2004, p. 48).
Este trabalho oferece aos representantes e vendedores de confecções, um software que
permite a digitação na hora de coletar o pedido do cliente e a transmissão dos dados destes
pedidos utilizando a praticidade da tecnologia web, incluindo avaliação de desempenho
através da metodologia Balanced ScoreCard (BSC) para gerenciar metas estratégicas. O uso
desta solução permite atender clientes com rapidez e integrar seus dados para outro sistema de
gestão economizando tempo e dinheiro. Digitação de pedidos por parte das empresas,
substituição dos blocos de pedidos manuais enviados por fax, eliminação de erros de
interpretação na hora da digitação e outros custos operacionais, são exemplos de benefícios
gerados pelo sistema.
A ferramenta desenvolvida possui dois módulos: um módulo de pedidos para
representantes e um módulo de retaguarda. Ambos serão desenvolvidos em Object Pascal e o
segundo utiliza o banco de dados Firebird. Foi utilizada a linguagem de marcação eXtensible
Markup Language (XML) para gerar os dados destinados à transmissão.
O módulo de pedidos foi desenvolvido para um dispositivo móvel que recebe
informações cadastrais, tais como: clientes, pedidos, títulos, produtos, tabela de preços, tipo
de cliente, coleção, condição de pagamento, tipo de documento, tipo de cobrança, portador,
transportadora, tipo de frete, moeda, representante, cidade e Unidade Federativa (UF). Neste
módulo são feitos o cadastro de clientes, a digitação de pedidos, consultas BSC, consultas de
títulos pendentes, pedidos pendentes, pedidos faturados e transmissão de dados com o módulo
de retaguarda.
O módulo de retaguarda é responsável por integrar as informações importadas e
exportadas entre o módulo de pedidos e o sistema de gestão, utilizando-se da tecnologia web e
XML para a interação dos dados.
15
1.1 OBJETIVOS DO TRABALHO
O objetivo deste trabalho é desenvolver um sistema de pedidos para representantes de
empresas de confecções, incluindo a metodologia do BSC para a medição de seu desempenho,
juntamente com uma solução de módulo de retaguarda para alimentar o processamento de
pedidos e outros dados no sistema de gestão das empresas
Os objetivos específicos do trabalho são:
a) receber os indicadores BSC da empresa de confecções tais como: número de
clientes atendidos, número de clientes novos, numero de clientes por UF, venda
bruta, vendas por faixa de valores, % crescimento das vendas por cliente, %
crescimento das vendas por produto;
b) consultar e emitir informações como: consultas e gráficos BSC, pedidos faturados,
títulos pendentes e tabela de preços dos produtos;
c) importar dados do sistema de gestão de uma empresa de confecção,
compreendendo clientes, pedidos, títulos, produtos, tabela de preços, tipo de
cliente, coleção, condição de pagamento, tipo de documento, tipo de cobrança,
portador, transportadora, tipo de frete, moeda, representante, cidade e UF. Todos
os dados mencionados são pertinentes a cada representante;
d) exportar dados de clientes e pedidos, utilizando arquivos XMLe e-mail.
1.2 ESTRUTURA DO TRABALHO
O trabalho está dividido em quatro capítulos.
O primeiro apresenta uma introdução ao tema do trabalho, apresentando objetivos e a
estrutura do mesmo.
O segundo apresenta uma fundamentação teórica descrevendo os temas centrais do
trabalho: Ferramentas Open Source Lazarus e Free Pascal e Firebird, Object Pascal, XML e
Balanced Scorecard.
O terceiro trata da especificação e implementação do sistema. Demonstrado através de
requisitos, diagramas de entidade e relacionamento (DER), casos de uso, classes e seqüência.
Ilustrando algumas telas do sistema com suas devidas considerações;
16
O ultimo capitulo trata da conclusão do trabalho, descrevendo suas considerações
finais tais como dificuldades enfrentadas, resultados alcançados e sugestões para novas
implementações.
17
2 FUNDAMENTAÇÃO TEÓRICA
O objetivo deste capítulo é apresentar a fundamentação teórica sobre sistema de pedidos,
BSC, classe DAO e trabalhos correlatos.
2.1 VENDA POR PEDIDO
Venda por pedido é vender algo a alguém através de uma relação de produtos. Neste
tipo de venda o cliente escolhe os produtos de um mostruário que pode ser físico ou virtual,
determinando a quantidade desejada de cada produto a ser comprado. Como este trabalho tem
o objetivo de atender representantes de confecções, a demonstração dos produtos pode ser
feito através de um catálogo impresso, catálogo virtual (multimídia), site e mostruário físico.
Este tipo de venda está dividido em sete etapas descritas, a seguir (KOTLER, 1994, p. 603):
a) Prospecção e Qualificação identificam os clientes em potencial através de
indicação de clientes já firmados. Os clientes podem ser qualificados através de um
exame sobre sua situação financeira, volume de negócios e sua probabilidade de
continuidade no mercado.
b) Pré-abordagem é o planejamento da melhor abordagem, que pode ser uma visita
pessoal, ligação telefônica ou correspondência e a escolha do melhor momento
para a abordagem.
c) Abordagem deve proporcionar ao vendedor obter do comprador a compreensão do
que ele mais necessita, demonstrando as vantagens que a venda proporcionará para
ambas as partes.
d) A apresentação e demonstração o representante detalha todos os dados sobre o
produto, enfatizando os seus benefícios e suas principais características. Tudo isso
para que possa descobrir os principais problemas do cliente e lhe ofertar soluções
através de seus produtos.
e) Superações de objeções ocorrem quando os clientes apresenta uma resistência
sobre a compra dos produtos e o representante precisa manter uma abordagem
positiva, convertendo estas resistências em mais motivos de compra, esclarecendo
as objeções, questionando-as ao fato de que o comprador responda sua própria
18
objeção.
f) Fechamento é o estágio em que se fecha a venda. Existem vários argumentos para
o fechamento da venda.
g) Acompanhamento (Follow Up) e manutenção esta etapa é necessária para
assegurar a satisfação do cliente e garantir novos negócios.
Além disso, algumas empresas usam as tecnologias de comunicação para adoção de
sistemas que possibilitam ao cliente efetuar seu pedido on-line, ou seja, acessando o estoque
da empresa na hora de efetuar o pedido, adotando a técnica de pedido just in time (meta de
estoque zero). Esta técnica é fundamentada em deixar um estoque reduzido ao máximo,
aumentando a qualidade e produtividade na empresa (KOTLER, 1994, p. 606).
2.2 BALANCED SCORECARD
O Balanced ScoreCard (BSC) é denominado como indicadores balanceados de
desempenho e fornece uma metodologia para monitoramento das metas estratégicas e de
medição dos resultados atingidos. Este método de gestão refere-se aos aspectos mais
importantes do negócio proporcionando uma melhor leitura sobre os objetivos estratégicos,
possibilitando a aplicação das ações estratégicas para os ajustes e medidas necessárias
(BALZANE, 2006).
Kaplan e Norton (1997, p. 9) descrevem que as empresas já trabalham com sistemas de
medidas de desempenho que incorporam medidas financeiras e não-financeiras. Porém o
Balanced ScoreCard (BSC) além dos indicadores de desempenho, traduz a missão e a
estratégia objetivando medidas tangíveis tornando-se um sistema de gestão estratégica.
Segundo Kaplan e Norton (1997, p. 24) é uma ferramenta completa que traduz a visão
e a estratégia da empresa num conjunto coerente de medidas de desempenho organizados em
quatro perspectivas diferentes: financeira, cliente, processos internos e aprendizado.As
perspectivas do BSC podem ser observadas na figura 1.
19
Fonte: KAPLAN e NORTON (1997).
Figura 1 – Perspectivas do Balanced ScoreCard
2.2.1 Perspectiva Financeira
Os objetivos financeiros servem de foco para os objetivos e medidas das outras
perspectivas do BSC. Qualquer medida selecionada deve fazer parte de uma cadeia de
relações de causa e efeito que culminam com a melhoria do desempenho financeiro. A partir
dos objetivos financeiros de longo prazo são definidas ações que precisam ser tomadas em
relação aos processos financeiros, clientes, processos internos e, por fim, o aprendizado.
(Kaplan e Norton, 1997, p. 49)
Kaplan e Norton, (1997, p. 53) afirmam que objetivos financeiros devem abordar tanto
o lucro como o risco e devem ser relacionados ao crescimento, lucratividade e fluxo de caixa,
enfatizando sempre os melhores retornos sobre os investimentos. Para obtenção destes
resultados são utilizados temas estratégicos como: crescimento e mix de receita, redução de
custos, utilização de ativos e estratégia de investimento.
20
2.2.2 Perspectiva Cliente
Kaplan e Norton, (1997, p. 67) descrevem que, antes as empresas se concentravam em
suas capacidades internas, enfatizando o desempenho dos produtos e inovações tecnológicas.
No entanto, identifica-se hoje que as empresas devem observar as necessidades dos seus
clientes, oferecendo produtos e serviços que atendam suas preferências. Por isso uma pesquisa
de mercado em profundidade pode revelar os diferentes perfis de clientes e suas preferências.
O BSC como descrição da estratégia da empresa, deve identificar os objetivos relacionados
aos clientes em cada um desses segmentos, permitindo definir medidas essenciais aos
resultados relacionados aos clientes. Indicadores de desempenho utilizados para demonstrar
os resultados na perspectiva dos clientes focando em temas como: participação de mercado,
captação de clientes, retenção de clientes, satisfação de clientes e lucratividade dos clientes.
Cada tema é descrito abaixo no quadro 1. O trabalho abrange esta perspectiva para
demonstrar algumas aplicações deste conceito, objetivando o acompanhamento do alcance das
metas traçadas.
Participação de mercado
Reflete a proporção de negócios num determinado
mercado (em termos de clientes, valores gastos ou
volume unitário vendido).
Captação de Clientes
Mede, em termos absolutos ou relativos, a intensidade
com que uma unidade de negócios atrai ou conquista
novos clientes ou negócios.
Retenção de Clientes
Controla, em termos absolutos ou relativos, a
intensidade com que uma unidade de negócios retém ou
mantém relacionamentos contínuos com seus clientes.
Satisfação dos Clientes
Mede o nível de satisfação de clientes de acordo com
critérios específicos de desempenho dentro da proposta
de valor.
Lucratividade dos clientes
Mede o lucro líquido de cliente e segmentos, depois de
deduzidas as despesas específicas necessárias para
sustentar esses clientes.
Quadro 1 – Perspectiva de clientes do Balanced ScoreCard
2.2.3 Perspectiva Processos internos
Kaplan e Norton, (1997, p. 97) citam que a maioria das empresas concentram-se na
melhoria dos processos operacionais existentes. Para o BSC recomenda-se que se defina a
21
cadeia de valor completa dos processos internos que tenha início com o processo de inovação,
identificação das necessidades atuais e futuras de clientes e desenvolvimentos de novas
soluções para essas necessidades, prossiga com os processos de operações, entrega dos
produtos e prestação de serviços aos clientes existentes e termine com o serviço de pós venda.
Este procedimento garante a qualidade dos produtos e processos, a inovação, logística e
qualidade das informações, da comunicação interna e das interfaces.
2.2.4 Perspectiva Aprendizado e Crescimento
Kaplan e Norton, (1997, p. 131) afirmam que as três perspectivas anteriores revelam onde a
empresa deve se destacar para obter um desempenho excepcional, porém esta última é
direcionada na capacidade dos funcionários, sistemas e procedimentos para o aprendizado e
crescimento da organização. Isto exige um investimento significativo em pessoal, sistemas e
processos que produzam medidas essências como: satisfação de funcionários, retenção de
funcionários e produtividade dos funcionários. Os vetores situacionais de infra-estrutura e
clima para a ação possibilitam a busca por uma reciclagem estratégica. Os indicadores
monitoram resultados a partir dos investimentos feitos em funcionários, sistemas e
alinhamento organizacional. Na figura 2 é mostrada a estrutura de medição do aprendizado e
crescimento.
Fonte: KAPLAN e NORTON (1997).
Figura 2 – Estrutura de medição do aprendizado e crescimento Balanced ScoreCard
22
Cimino (2004) desenvolveu um trabalho para apresentar a implantação do Balanced
Scorecard em pequenas empresas. Demonstra como medir seus desempenhos, afim de
aperfeiçoar seus atuais negócios mostrando os benefícios que o BSC pode trazer para estas
organizações. Particularidades como formalização de processos de gerenciamento,
aperfeiçoamento nos níveis de supervisão, informação e consenso criando um processo para
especificar objetivos e medir sua performance para estabelecer seus respectivos planos de
ação.
O Balanced Scorecard foi criado para solucionar o problema de comunicação do
planejamento empresa como um todo, visando utilizar uma visão holística da
administração em beneficio do seu planejamento estratégico. É o planejamento em
ação. Foi escolhido pela Harvard Business Review (HBR) como uma das práticas de
gerenciamento mais importantes dos últimos 75 anos, revela-se como uma
ferramenta capaz de atender às novas exigências de gerenciamento dentro dos
cenários econômicos em constantes mutações, como um instrumento de maior
importância à construção de uma estrutura de indicadores estratégicos que possua
abrangência e coerência compatível com a nova era do conhecimento. O BSC, de
acordo com Campos (2001), não traz qualquer conceito novo, mas repensa temas
antigos, chamando a atenção para pontos que estavam esquecidos ou mal
compreendidos, mostrando a vinculação entre pontos vitais que não estavam
claramente articulados (Balzani, 2006).
2.3 XML
―XML é uma linguagem usada para representar dados como uma string de texto que
inclui uma ‗marcação‘ intercalada, a fim de descrever as propriedades de dados‖ (GRAVES,
2003, p. 08).
A XML é aplicável em qualquer nível de complexidade, sendo auto descritiva. Suas
marcações personalizadas podem ser criadas para qualquer necessidade, além da facilidade de
manutenção, já que possui marcações tendo os links e folhas de estilos em separado, podendo
ser alterado cada um separadamente, facilitando as modificações. Um dos pontos fortes da
XML é sua portabilidade, já que sua sintaxe universal de estrutura de dados permite a troca de
dados independente da plataforma (GRAVES, 2003, p. 02).
Uma tendência forte é o compartilhamento de dados utilizando a XML. Mesmo que
duas organizações possuam metodologias de trabalhos diferentes, poderiam utilizar uma
transmissão de dados em formato combinado conhecido pelas duas. São muito utilizados
arquivos textos delimitados, que são arquivos separados por tabulações marcadas por um
caracter em especial, por exemplo o ponto e virgula (;), que separa um campo de outro. No
23
entanto, seria necessário integrar estes arquivos a um banco de dados ou uma estrutura de
memória (FURTADO, 2005). Um exemplo de arquivo XML é representado no quadro 2.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<pedidos>
<pedido id="1">
<item descrição="1" qtde="10" />
<item descrição="2" qtde="20"/>
</pedido>
<pedido id="2">
<item descrição="1" qtde="05" />
<item descrição="3" qtde="10"/>
<item descrição="4" qtde="10"/>
</pedido>
<descrições>
<descrição id="1">Blusa floral</descrição>
<descrição id="2">Calça Oxford</descrição>
<descrição id="3">Saia Clean Just</descrição>
<descrição id="4">Vestido Little Kently</descrição>
</descrições>
</pedidos>
Quadro 2 – Exemplo de um arquivo XML
2.4 LAZARUS E FREE PASCAL
A ferramenta Lazarus é um ambiente de desenvolvimento integrado desenvolvido para
o compilador Free Pascal. Compatível com o Delphi, porém suporta diversas arquiteturas e
sistemas operacionais. Possibilita desenvolver a aplicação com Cross-compilaçao, ou seja,
tanto para o sistema operacional Windows, quanto para o sistema operacional Linux, entre
outros. Isto é possível através do compilador Free Pascal que foi desenhado para compilar
código com a sintaxe do Delphi ou dos dialetos Pascal do Macintosh e gerar executáveis para
diferentes plataformas a partir do mesmo código-fonte. Isto graças ao Lazarus Component
Library (LCL) que é um conjunto de classes e componentes visuais e não visuais que
funciona em múltiplas plataformas chamando as funções de diferentes bibliotecas de interface
de usuário em diferentes plataformas (MANZANO, 2006)
Uma linguagem limpa e com a sintaxe clara, não utiliza makefiles, embora seja
suportado através da ferramenta fpcmake, seu compilador é rápido e cada unit tem seus
próprios identificadores, o que ajuda evitar a poluição do namespace. Possui uma IDE
escrita usando a biblioteca FreeVision, que é clone gratuito da biblioteca TurboVision,
distribuída pelos antigos compiladores Turbo Pascal e Turbo C++ da Borland. Excelente
24
integração com assembly podendo misturar código assembly com código pascal, sendo
compatível com códigos já existentes programados em Turbo Pascal ou Delphi (GOMES,
2008).
Voort (2006) descreve os procedimentos para compilar o programa escrito no Free
Pascal Lazarus (FPL) de uma plataforma para outra. Destacam-se as instruções apresentadas
para compilação do sistema em windows para linux na quadro 3.
25
Para compilar para Linux do Windows:
Requisitos:
-ftp://freepascal.stack.nl/pub/fpc/contrib/cross/mingw/binutils-2.15-win32-i386-linux.zip - O FPC do repositório CVS (qualquer um acima de 1.9.6).
- Um árvore do Lazarus (qualquer uma construível a partir do mesmo
período).
- Muitas bibliotecs do Linux alvo. Um dos servidores FPC é um SUSE, de onde
eu obtive a lista abaixo:
1) Baixar ftp://freepascal.stack.nl/pub/fpc/contrib/cross/mingw/binutils-2.15-win32-i386-
linux.zip 2) Extraia-o e mova os arquivos i386* para <fpcbindir>\bin\i386-win3 (por
exemplo c:\pp\bin\i386\win32)
3) Vá parra o diretório dos fontes do FPC
4) make clean
5) Faça o OS_TARGET = linux all
6) Faça o OS_TARGET = linux e instale INSTALL_PREFIX = <fpcbindir>
7) Prepare o diretório lib como nas intruções abaixo, eu usei
d:\fpc\linuxlib para estocá-las.
8) Vá para <fpcbindir>\units\i386-linux\rtl e copie o cprt21.o sobre o
cprt0.o
9) Vá para o diretório do Lazarus
10) Edite o lazarus.pp e adicione {$linklib dl} e {$linklib gmodule} em
algum lugar nos fontes.
11) Faça o OS_TARGET = linux all OPT = "-gl -Fld:\fpc\linuxlib -Xr/usr/lib
-FL/usr/lib/ld-linux.so.2"
Se der algum erro do vinculador (mais especificamente linker can't find -
l<something>) então
12) Edite manualmente o link.res se necessário (veja abaixo para
observações sobre gtk ) e adapte os nomes -l<x> no final dos arquivos. I
had to add -1.2 to all gtk
libs, to keep them apart from gtk2
13) Execute o ppas.bat para reiniciar o vinculador
Bibliotecas Existem as bibliotecas que eu coletei para Lazarus e a IDE modo texto(o
Lazarus não precisa da pthread).
Eu as coletei do target system e renomeei todas de lib<name>.so.x.y to
lib<name>.so.
libgcc.a e umas outras são mais fáceis de encontrar fazendo gcc -v e
procurando uma linha como
"Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.5/specs"
então algumas das libs estão em /usr/lib/gcc-lib/i486-linux/3.3.5/ Uma boa
outra localização é /lib /usr/lib /usr/local/lib /usr/x11R6/lib e
/opt/gnome/lib
libpthread.so.0
libdl.so
libc.so
ld-linux.so.2
crtbegin.o
crtbeginS.o
crtbeginT.o
crtend.o
crtendS.o
crtn.o
crti.o
libgcc.a
libX11.so
libXi.so
libglib-1.2.so
libgmodule-1.2.so.0
libgdk_pixbuf.so
26
libgdk-1.2.so
libgtk-1.2.so
libXext.so
libm.so
libdl.so.2
libgmodule-1.2.so
Note que alguns diretórios estão duplicados, com ou sem sufixo. Elas são
necessárias porque alguma outra lib tem dependência dela.
Nome exato (assim o form lib<name>.so.x) Não podemos symlink no windows,
então eu simplesmente o copiei.
Errar ao renomear não é tão ruim, haverá chances de consertar . Tenha
certeza de que todos os crt* e o arquivo "libc.so" estão disponíveis, senão
gerar o link.res vai dar errado.
No meu caso compilação para o passo 11 vai dar certo mas o vinculador vai
dizer que não pode encontrar o libgtk.so e as outras bibliootecas marcadas
com -1.2. Isso é por causa do target system, libgtk é GTK 2.0 enquanto nós
queremos o gtk1.2 para o Lazarus.
Para consertar isso manualmente eu adicionei -1.2 às linhas -l
correspondentes no final do arquivo link.res que foi gerado no Passo 11.
P.S.: Um bocado de edições do vinculador podem ser resolvidas com os beta
linker control switches (-XLA and friends) em 2.0.4 e 2.1.1. Mas eles são
beta, sem documentação e não necessariamente disponíveis em versões
futuras. Sâo na maioria adicionados a um pacote de construtores (para Linux
distros) e cross-compiladores uma chance de avaliar uma possível opção.
Quadro 3 – Procedimentos para compilar um programa de Windows para Linux
O Lazarus possui suporte para vários bancos de dados, podendo efetuar a instalação do
pacote adequado para acessar o banco escolhido. O acesso aos bancos de dados pode ser feito
por meio de código, ou colocando componentes num formulário ou janela. Os componentes
sensíveis a dados representam os campos de uma tabela representada por um TDataSource.
A conexão entre ambos é feita através de propriedades. A tabela por sua vez está associada a
um banco de dados por meio de componentes específicos, como TPSQLDatabase,
TSQLiteDataset ou outros (LAZARUS, 2008)
Os seguintes bancos de dados são suportados:
a) PostgreSQL requer o pacote PSQL;
b) DBase and FoxPro podem ser acessados sem a necessidade de um servidor ou uma
biblioteca externos através do componente TDbf ;
c) MySql é suportado;
d) SQLite precisa apenas de uma única biblioteca externa e do componente
TsqliteDataset;
e) MSSQL funciona com o Zeoslib;
f) Interbase / Firebird também funcionam com o último Zeoslib.
27
2.5 BANCO DE DADOS FIREDIRD
O Firebird é evolução do Interbase 6.0 Open Source. Após a Borland disponibilizar o
código, ela decidiu que continuaria mantendo uma versão comercial do produto (código
fechado). Atualmente uma entidade decidiu dar continuidade ao banco de dados, criando
versões do Firebird que são open source, o qual está crescendo e adquirindo novos recursos a
cada dia, sendo mantido atualmente por um grupo denominado Phoenix e pela Fundação
Firebird (FREITAS, 2002). O código é totalmente aberto à comunidade e qualquer um pode
participar na correção de bugs, implementação, documentação e criação de novas ferramentas.
O Firebird oferece uma solução de gerenciador de banco de dados de alta performance,
enquadrando-se nos requerimentos do padrão SQL-92, suportando integridade referencial
declarativa com operações de cascata, atualizações de visões e junções externas. Possui
modelo estruturado de transações, ou seja, envia instruções ao banco de dados em forma de
blocos com a característica que somente serão executadas completamente ou não são
executadas, além de que podem ser apresentadas ao servidor de forma isolada e não serão
afetadas por alterações realizadas por transações concorrentes (SANTOS, 2005).
2.6 DAO
Data Access Object (DAO) é um padrão para persistência de dados que permite
separar regras de negócios das regras de acesso a banco de dados abstraindo as
funcionalidades de banco de dados como conexões, mapear objetos e execução de comandos
SQL. A utilização deste padrão leva a produtividade devido ao reuso, facilidade na
manutenção e encapsulamento do acesso ao banco de dados (SARDAGNA e VAHLDICK,
2008).
Segundo (Decaria, 2007) as classes DAO são responsáveis por realizar o acesso aos
dados, em uma base de dados. As classes DAO podem ser to tipo Singleton, um padrão de
projeto de software. O DAO concentra toda a relação com o banco de dados e o filtro das
informações que são enviadas em um só lugar, facilitando a tomada de medidas de segurança
no desenvolvimento.
28
2.7 TRABALHOS CORRELATOS
Silva (2007) fez um estudo sobre medição de desempenho baseado nas ferramentas da
produção enxuta. O trabalho apresenta uma pesquisa realizada em uma empresa do setor
metalúrgico que buscou estudar a aplicação de um sistema de medição de desempenho,
identificando as diferenças dos indicadores usuais e sua evolução até os indicadores utilizados
na produção Enxuta. O estudo apresenta a relação entre indicadores estratégicos e os
indicadores operacionais.
O conceito da Produção Enxuta originou-se na indústria automobilística japonesa, mais
precisamente na Toyota, que compreendeu que muitos dos custos de produção do sistema de
produção em massa são gerados por atividades que não agregam valor para o cliente, portanto
devem ser eliminadas, ou, caso não fosse possível, reduzidas ao máximo. Estas atividades que
não agregam valor são chamadas de desperdícios.
Entre os medidores de desempenho apresentados em seu trabalho encontra-se o
método BSC que, segundo o Balanced Scorecard Institute fornece uma descrição clara a
respeito do que as empresas devem medir para equilibrar a perspectiva financeira. É um
sistema de gerenciamento, e não somente um sistema de medição, que permite as
organizações clarear suas visões e estratégias, fornecendo assim, um retorno dos processos
internos do negócio e dos resultados externos para melhorar continuamente o desempenho e
os resultados estratégicos. A metodologia utiliza alguns conceitos de técnicas de
gerenciamento conhecidas como Total Quality Management (TQM), melhoria contínua e
gerenciamento baseado em medição e feedbacks.
Kracik (2002) implementou um protótipo que padroniza informações contábeis
utilizando XML. Esta linguagem possibilita gerar um padrão de comunicação entre sistemas
distintos transferindo e armazenando dados de um modo prático, uma vez que sua estrutura
não passa de um arquivo tipo texto que armazena os dados em forma de árvore e que se utiliza
de marcadores personalizados. Possibilitou desenvolver um servidor que armazena dados
contábeis usando o padrão estabelecido e outro aplicativo cliente que fornece e extrai
informações. Também foram abordadas neste trabalho as tecnologias de XML Schema que
define a estrutura, conteúdo e a semântica dos documentos XML e Simple Object Access
Protocol (SOAP) e web services que são representados por duas classes básicas da linguagem
Object Pascal: Tinvokable e Tremotable, que juntas formam a base da herança dos objetos
que compõem a comunicação entre aplicativos. O Tinvokable é uma classe básica que agrupa
29
os métodos que representam as mensagens entre cliente e servidor no protocolo SOAP e
Tremotable é a classe que dá origem as classes que representam os elementos que podem ser
enviados através das mensagens.
Werner (2004) desenvolveu uma ferramenta que permite gerenciar o SGBD Firebird,
permitindo fazer a manutenção do banco de dados, além de poder incluir, alterar e excluir
dados na estrutura da base de dados e executar comandos SQL. Trata-se de uma ferramenta
open source destinado ao gerenciamento do SGBD do Firebird utilizando o ambiente de
programação Delphi e usando componentes como o IBObject que facilitam na comunicação
com os dados do banco Firebird, para gerenciar a base de dados. Batizado como FBConsole,
foi desenvolvido para facilitar a visualização de bases de dados e tabelas do Firebird,
execução de comandos em formato SQL, manutenção das propriedades de uma base de dados
e tabelas, manutenção dos dados de uma tabela e permissão de múltiplas conexões com o
SGBD como acontece com o IBConsole em relação ao banco Interbase.
30
3 DESENVOLVIMENTO
Neste capítulo são detalhadas as especificações e implementações do sistema,
demonstrados através de requisitos, diagramas de entidade e relacionamento (DER), casos de
uso, classes e seqüência e ilustradas através de algumas telas do sistema com suas devidas
considerações;
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO
Levantamentos junto a empresas de confecções e representantes, e analisando sistemas
similares, puderam-se definir os seguintes requisitos funcionais para a elaboração deste
trabalho como demonstrado no quadro 4:
31
Requisitos Funcionais
Casos
de
Uso
RF01: armazenar e recuperar dados de clientes. UC001
RF02: armazenar e recuperar dados de pedidos. UC002
RF03: armazenar e recuperar regras de BSC. UC003
RF04: recuperar dados de produtos. UC004
RF05: consultar informações de pedidos faturados. UC005
RF06: consultar títulos pendentes. UC006
RF07: possibilitar a consulta de preço dos produtos. UC007
RF08: consultar informações de BSC UC008
RF09: gerar gráfico dos resultados do BSC. UC009
RF10: consultar comissões. UC010
RF11: consultar condição de pagamento UC011
RF12: consultar transportadoras. UC012
RF12: importar dados do sistema de gestão como: clientes,
pedidos, títulos, produtos, tabela de preços, condição de
pagamento, transportadora. Todos os dados mencionados são
pertinentes a cada representante. UC013
RF13: exportar dados de clientes e pedidos através de arquivos XML
para o módulo de retaguarda. UC014
Quadro 4 – Requisitos Funcionais
O Quadro 5 lista os requisitos não funcionais do sistema, identificando os requisitos que
foram implementados.
Requisitos Não Funcionais
RNF01: evitar que ocorra duplicidade de informações de clientes e
pedidos em relação aos que são enviados pelo representante e os
cadastrados diretamente na empresa de confecções.
RNF02: utilizar no módulo de sistema de pedido a linguagem de
programação Object Pascal e utilizar um banco de dados open source
como o Firebird.
RNF03: compilar o sistema em duas plataformas Windows e Linux
utilizando o compilador Free Pascal.
RNF04: efetuar as consultas do sistema utilizando comandos SQL.
Quadro 5 – Requisitos Não Funcionais
32
3.2 ESPECIFICAÇÃO
Para especificação do sistema, tanto do módulo de pedidos quanto do módulo de
retaguarda, foi utilizado à ferramenta Enterprise Architect para criar os diagramas de casos de
uso e diagrama de classes. Para o diagrama de entidade de relacionamento (DER) foi utilizado
o DBDesigner 4, ferramenta freeware, para edição desse tipo de diagrama. O módulo de
retaguarda interage com o sistema de pedido e a empresa de confecção, enviando e recebendo
os arquivos XML através de e-mail ou File Transfer Protocol (FTP) como demonstrado na
figura 3.
Figura 3 – Visão geral do sistema
Os Diagramas de casos de uso estão divididos em pacotes para facilitar a demonstração
de suas funcionalidades. Na Figura 4 é mostrado o diagrama de casos de uso do módulo de
pedidos referente aos cadastros.
33
Figura 4 – Diagrama de casos de uso (Cadastros)
Na Figura 5 são mostrados os diagramas de casos de uso do módulo de pedidos que
estão relacionadas com a parte das consultas.
Figura 5 – Diagrama de casos de uso (Consultas)
Na Figura 6 são mostrados os diagramas de casos de uso do módulo de pedidos que
estão relacionadas com a parte das consultas de tabelas de apoio.
34
Figura 6 – Diagrama de casos de uso das tabelas de apoio (Consultas)
Na figura 7 é demonstrado o diagrama de classe do módulo retaguarda que é
responsável pela troca das informações podendo ser executada pelo representante.
Figura 7 – Diagrama de casos de uso Retaguarda
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso cadastrar clientes na figura 8.
35
Figura 8 – Descrição de casos de uso cadastrar clientes
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso digitar pedidos na figura 9.
Figura 9 – Descrição de casos de uso digitar pedidos
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso gerar gráfico BSC na figura 10.
36
Figura 10 – Descrição de casos de uso gerar gráfico BSC
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar BSC na figura 11.
Figura 11 – Descrição de casos de uso consultar BSC
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar faturamento na figura 12.
Figura 12 – Descrição de casos de uso consultar faturamento
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar títulos pendentes na figura 13.
37
Figura 13 – Descrição de casos de uso consultar títulos pendentes
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar tabela de preço na figura 14.
Figura 14 – Descrição de casos de uso consultar tabela de preço
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar comissões na figura 15.
Figura 15 – Descrição de casos de uso consultar comissões
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar transportadoras na figura 16.
38
Figura 16 – Descrição de casos de uso consultar transportadoras
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar condição de pagamento na figura 17.
Figura 17 – Descrição de casos de uso consultar condições de pagamento
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso consultar produtos na figura 18.
Figura 18 – Descrição de casos de uso consultar produtos
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso importar na figura 19.
39
Figura 19 – Descrição de casos de uso importar
A seguir é descrito as pré e pós-condições, cenário principal e alternativo referente ao
diagrama de casos de uso exportar na figura 20.
Figura 20 – Descrição de casos de uso exportar
Foi criada uma classe central chamada DAOGeral, onde todas as entidades tratadas
no sistemas herdam suas características, deixando o trabalho de conexão, busca e gravação
das informações com o banco de dados totalmente centralizado. Esta classe conta com dois
métodos principais que devem ser sobrescritos nas classes mais específicas, que são o
classeParaTabela e o tabelaParaClasse, responsáveis enviar as informações para
as classes e buscar as informações da classe para serem salvas no banco de dados.
Outros métodos mais genéricos são implementadas na classe DAOGeral como o
salvar, abrir, novo, proximo e anterior, além de outros métodos acessórios
utilizados internamente pela classe.
A seguir é mostrado o diagrama de classe do módulo do pedido ilustrado na figura 21.
40
Figura 21 – Diagrama de classes
No apêndice A é demonstrado parte do código fonte da classe DAOGeral referente a
clientes e as funções de buscas na tabela.
Na Figura 22 é mostrado o diagrama de entidade e relacionamento (DER) do módulo
do pedido, desenvolvido na ferramenta DBDesigner 4.0.
41
Figura 22 – Diagrama de entidade e relacionamentos (DER)
O script para geração do banco de dados Firebird está demonstrado no apêndice B.
O dicionário de dados desenvolvido para especificar o sistema é apresentado na sequência
para cada uma das entidades do DER, através dos quadros de número 6 a 18.
42
A tabela BSC
Campo Descrição Tipo/Tamanho
COD_BSC Código do BSC INTEGER
COMANDO_SQL
Comando SQL que resultará um
numero inteiro para confrontar com
a meta VARCHAR(100)
MINIMO valor minimo do BSC INTEGER
META valor da meta do BSC INTEGER
OBJETIVO Objetivo a ser alcançado pelo BSC VARCHAR(100)
INDICADOR
Descrição do que se deve fazer
para alcançar o objetivo VARCHAR(100)
DSC_META Descrição da meta VARCHAR(100)
ACAO_PROSPECT_A 1º acao do BSC conforme resultado VARCHAR(100)
ACAO_PROSPECT_B 2º acao do BSC conforme resultado VARCHAR(100)
ACAO_PROSPECT_C 3ª acao do BSC conforme resultado VARCHAR(100)
NOTA_ACOMPANHAMENTO Nota de acompanhamento do BSC VARCHAR(100)
DTA_CADASTRO Data de cadastro DATE
DTA_ATUALIZACAO Data da atualização DATE
Quadro 6 – Dicionário de dados – BSC
Tabela de Comissões
Campo Descrição Tipo/Tamanho
COD_COMISSAO Codigo da comissão INTEGER
DTA_COMISSAO Data da comissão DATE
VLR_COMISSAO Valor da comissão NUMERIC(8,2)
Quadro 7 – Dicionário de dados – Comissões
Tabela de condição de pagamento
Campo Descrição Tipo/Tamanho
COD_COND_PGTO Codigo condição de pagamento CHAR
DSC_COND_PGTO Descrição da condição de pagamento VARCHAR(40)
DESCONTO_COND_PGTO Desconto da condição de pagamento FLOAT
Quadro 8 – Dicionário de dados – Condição de pagamento
Parcelas da condição de pagamento
Campo Descrição Tipo/Tamanho
COD_PARCELA codigo da parcela CHAR
DIAS_PARCELA
Dias referente o vencimento da
parcela INTEGER
PER_PARCELA
percentual da parcela em relação a
fatura FLOAT
Quadro 9 – Dicionário de dados – Parcelas da condição de pagamento
43
A tabela Clientes
Campo Descrição Tipo/Tamanho
COD_CLIENTE Codigo do cliente INTEGER
NOM_FANTASIA Nome fantasia VARCHAR(30)
BAIRRO Bairro VARCHAR(20)
CEP Cep VARCHAR(10)
CIDADE Cidade VARCHAR(40)
COD_CLIENTE_EXTERNO Codigo externo do cliente VARCHAR(10)
CONTATO Contato VARCHAR(30)
DTA_CADASTRO Data de cadastro DATE
DTA_ATUALIZACAO Data de atualização DATE
DDD DDD CHAR(3)
TELEFONE Telefone VARCHAR(10)
EMAIL Email VARCHAR(60)
ENDERECO Endereço VARCHAR(60)
IE_RG Inscrição Estadual ou RG VARCHAR(20)
FLG_INATIVO
Flag de inativo:
1 - True
0 - False CHAR(1)
FLG_CREDITO
Flag de credito de compra:
1 - True
0 - False CHAR(1)
OBS Observação do cliente VARCHAR(100)
FLG_TIPO_PESSOA
Flag de tipo de pessoa:
1 - Pessoa Juridica
0 - Pessoa Fisica CHAR(1)
RAZAO_SOCIAL Razão Social do cliente VARCHAR(60)
UF Unidade Federativa CHAR(2)
Quadro 10 – Dicionário de dados – Clientes
Tabela dos itens de Faturamentos
Campo Descrição Tipo/Tamanho
num_item Numero do item INTEGER
QTD_ITEM quantidade do item INTEGER
VLR_ITEM valor do item FLOAT
Quadro 11 – Dicionário de dados – Itens do faturamento
44
Tabela de Faturamentos
Campo Descrição Tipo/Tamanho
COD_NF Codigo da nota fiscal INTEGER
NRO_NF numero da nota fiscal VARCHAR(10)
VLR_NF valor da nota fiscal NUMERIC(8,2)
PESO_BRUTO peso bruto NUMERIC(8,2)
PESO_LIQUIDO peso liquido NUMERIC(8,2)
DTA_EMISSAO data da emissao DATE
DTA_ENTREGA data de entrega DATE
FRETE
Flag de frete:
1 - Cif
2 - Fob CHAR(1)
PER_COMISSAO
percentual de comissão no
faturamento NUMERIC(8,2)
Quadro 12 – Dicionário de dados – Faturamentos
Tabela de Pedidos
Campo Descrição Tipo/Tamanho
COD_PEDIDO Codigo do pedido INTEGER
FLG_APROVADO
Flag de aprovação do pedido:
A - Aprovado pela empresa
R - reprovado
N - No Aguardo CHAR(1)
DTA_CADASTRO Data de cadastro DATE
DTA_ATUALIZACAO Data de atualização DATE
DTA_EMISSAO data da emissão DATE
PEDIDO_CLIENTE Pedido do cliente VARCHAR(10)
PEDIDO_EXTERNO Pedido externo do cliente VARCHAR(10))
PER_COMISSAO percentual de comissão NUMERIC(8,2)
PER_DESCONTO percentual de desconto NUMERIC(8,2)
STATUS_PEDIDO
Flag de status do pedido:
Faturado
Reservado
Em produção VARCHAR(30)
DTA_ENTREGA data de entrega DATE
OBS Observação do pedido VARCHAR(100)
Quadro 13 – Dicionário de dados – Pedidos
Tabela de itens do Pedido
Campo Descrição Tipo/Tamanho
cod_itempedido Codigo do item do pedido INTEGER
cod_produto Codigo do produto VARCHAR(10)
QTD_ITEM_PEDIDO quantidade do item do pedido INTEGER
VLR_ITEM_PEDIDO valor do item do pedido NUMERIC(8,2)
PER_DESCONTO percentual de desconto do item NUMERIC(8,2)
VLR_PRECO preco unitario do item do pedido NUMERIC(8,2)
Quadro 14 – Dicionário de dados – Itens do pedido
45
Tabela de Produtos
Campo Descrição Tipo/Tamanho
COD_PRODUTO codigo do produto VARCHAR(10)
DSC_PRODUTO descrição do produto VARCHAR(40)
FLG_INATIVO
Flag de inativo:
1 - True
0 - False CHAR(1)
Quadro 15 – Dicionário de dados – Produtos
Tabela de preços
Campo Descrição Tipo/Tamanho
COD_TABELA_PRECO Codigo da tabela de preço INTEGER
DSC_TABELA_PRECO Descrição da tabela de preço VARCHAR(40)
FLG_INATIVO
Flag de inativo:
1 - True
0 - False CHAR(1)
Quadro 16 – Dicionário de dados – Tabela de preços
Títulos
Campo Descrição Tipo/Tamanho
DTA_EMISSAO Data da emissão do titulo DATE
NRO_FATURA numero da fatura VARCHAR(10)
VLR_RECEBIDO valor recebido NUMERIC(8,2)
DTA_VENCIMENTO data do vencimento DATE
VLR_FATURA valor da fatura NUMERIC(8,2)
NRO_PARCELA numero da parcela CHAR(2)
Quadro 17 – Dicionário de dados – Títulos
Transportadoras
Campo Descrição Tipo/Tamanho
COD_TRANSPORTADORA codigo da transportadora INTEGER
NOM_TRANSPORTADORA nome da transportadora VARCHAR
DDD DDD CHAR(3)
TELEFONE Telefone VARCHAR(10))
EMAIL Email VARCHAR(60)
Quadro 18 – Dicionário de dados – Transportadoras
3.3 IMPLEMENTAÇÃO
Os assuntos seguintes descrevem as ferramentas e técnicas utilizadas para o
desenvolvimento do trabalho.
46
3.3.1 Ferramenta Lazarus e o compilador Free Pascal
A ferramenta de desenvolvimento Lazarus é Open Source e possui integrado a sua IDE
o compilador Free Pascal de Object Pascal que possibilitou desenvolver o sistema nas duas
plataformas Windows e Linux e provê um editor de código personalizável, além de um
ambiente de criação visual semelhante ao DELPHI. A figura 23 mostra o sistema compilado
nas duas plataformas geradas pela ferramenta Lazarus.
Figura 23 – Sistema compilado em duas plataformas: Windows e Linux
Alguns componentes foram instalados para possibilitar a interação do ambiente de
desenvolvimento com o banco de dados Firebird, como por exemplo, o componente Zeoslib,
que possibilitou a conexão ao banco Firebird.
3.3.2 Balanced ScoreCard
O sistema possui consulta e gráfico mostrando indicadores de desempenho, destinado
ao acompanhamento do representante do ponto de vista estratégico, acompanhando seus
objetivos e metas. Os conceitos do BSC apresentados no trabalho concentram-se na
perspectiva de clientes, que pode ser representada por informações relacionadas ao cliente e
às vendas. O representante poderá utilizar o sistema planejando sua estratégia de atuação
antes de sair vendendo, colocando em pauta os principais indicadores para seu sucesso e
possibilitando descrevendo de forma dissertativa seus objetivos e planos de ações conforme o
resultado de seus indicadores.
47
3.3.3 Operacionalidade da implementação
Para demonstrar a operacionalidade da aplicação, são apresentadas a seguir algumas
telas do sistema visando demonstrar um caso real da utilização do mesmo.
3.3.1.1 Cadastros do sistema
A tela de cadastro de clientes apresenta opções para o representante incluir, alterar, pesquisar,
atualizar e excluir os registros de clientes. O representante poderá consultar o cliente por todos os
campos habilitados tais como: fantasia, razão social, cidade, conforme mostra a figura 24.
Figura 24 – Cadastro de Clientes
A tela de cadastro de pedidos apresenta opções para o representante incluir, alterar,
pesquisar, atualizar e excluir os registros de pedidos. O representante poderá consultar o
pedido por todos os campos habilitados tais como: pedido, cliente, emissão e coleção. A
alteração ou exclusão dos dados será permitida somente se o pedido não estiver aprovado para
garantir a integridade das informações enviadas para o sistema de gestão, conforme mostra a
figura 25, 26 e 27.
48
Figura 25 – Cadastro de Pedidos - Cabeçalho
Figura 26 – Cadastro de Pedidos – itens
49
Figura 27 – Cadastro de Pedidos – Observações
A tela de cadastro de BSC apresenta quatro opções para o representante: pesquisar,
novo, excluir e sair. Ao escolher a opção pesquisar o sistema substitui o botão novo pelo
gravar e mostrará os dados do BSC desejado, possibilitando efetuar a alteração dos dados,
conforme mostra a figura 28,29 e 30.
Figura 28 – Cadastro do Balanced ScoreCard - Cabeçalho
50
Figura 29 – Cadastro do Balanced ScoreCard - Ações
Figura 30 – Cadastro do Balanced ScoreCard - Indicadores
O cadastro do BSC é focado na perspectiva de clientes definido por campos
51
importantes para que seja atingido o objetivo. A seguir é mostrada a explicação para inclusão
dos dados no quadro 19.
Campos
Descrição e função dos
campos Exemplo
OBJETIVO
Serve para motivar e
comunicar a razão pela
qual a organização está
construindo o BSC e
ajudará a manter o
comprometimento dos
envolvidos
Agredir o mercado
ampliando nossa base de
clientes
INDICADOR
Definição pratica do que
será medido
Captação de novos
clientes
META
Valor da meta a ser
atingida 120
DESC_META
Descrição da meta a ser
atingida
Aumentar em 20% o
numero de clientes
novos
MINIMO
O valor minimo proposto
ao indicador de
desempenho 60
COMANDO_SQL
comando efetuado no
banco de dados para
adquirir o valor do
resultado esperado
select
count(cod_cliente) from
clientes where
data_cadastro >='2008-
11-01'
ACAO_PROSPECT_A
Ação a ser mostrada
quando o resultado estar
menor que 80% da meta
Aumentar o numero de
visitas
ACAO_PROSPECT_B
Ação a ser mostrada
quando o resultado estar
menor que 50% da meta
Divulgar um mix de
produtos na midia
ACAO_PROSPECT_C
Ação a ser mostrada
quando o resultado
estiver inferior a 30%
da meta
Propor uma promoção
junto a empresa de
confecções para
executar uma ação
conjunta para atrair
novos clientes
NOTA_DE_ACOMPANHAMENTO
Observações e relatos
sobre a execução das
ações
Após iniciar a ação A,
houve melhora a
aquisição de novos
clientes
Quadro 19 – Explicações sobre os campos do cadastro do BSC
3.3.1.2 Consultas do Sistema
O sistema permite consultar várias informações importadas do sistema de gestão pelo
módulo retaguarda. Estas telas irão fornecer apenas dados para consulta, não permitindo
52
qualquer inclusão ou alteração dos dados, conforme é mostrado.
A figura 31, que exibe a tela de consulta de títulos com filtros da fatura, intervalo de
datas referentes à emissão ou vencimento e sobre a situação dos títulos como: em aberto,
recebidos ou todos.
Figura 31 – Consulta de títulos
Na figura 32 e 33, são mostradas as telas de consulta de faturamento, onde o
representante poderá acompanhar os faturamentos efetuados pela empresa de confecções.
53
Figura 32 – Consulta de faturamento - Cabeçalho
Figura 33 – Consulta de faturamento - itens
Na figura 34, é mostrada a tela de consulta de produtos, com filtros pela descrição ou
código do produto e se estão ou não inativos.
54
Figura 34 – Consulta de produtos
Na figura 35, é mostrada a tela de consulta de tabela de preços.
Figura 35 – Consulta de tabela de preço
Na figura 36, é mostrada a tela de consulta de comissões, filtros pelo intervalo de datas
de pagamentos de comissões e intervalo de código de clientes
55
Figura 36 – Consulta de comissões
Na figura 37, é mostrada a tela de consulta de condição de pagamento.
Figura 37 – Consulta de condições de pagamentos
Na figura 38, é mostrada a tela de consulta de transportadora.
56
Figura 38 – Consulta de transportadoras
3.3.1.3 Consultas e gráfico do BSC
A consulta do BSC serve para indicar seu desempenho em relação aos seus objetivos
estratégicos cadastrados, conforme mostrada na figura 39.
Figura 39 – Consulta de Balanced Scorecard
O gráfico do BSC demonstra de forma clara e objetiva em relação aos seus objetivos
57
estratégicos cadastrados, conforme mostrado na figura 40.
Figura 40 – Gráfico de Balanced ScoreCard
O módulo retaguarda é responsável pela troca de informações entre o módulo de
pedidos e o sistema de gestão através de arquivos XML, conforme mostrado na figura 41.
Figura 41 – Módulo de retaguarda
58
Arquivos XML de clientes e pedidos utilizados para importação e exportação pelo
modulo retaguarda está demonstrado no apêndice C.
3.4 RESULTADOS E DISCUSSÃO
O sistema foi desenvolvido primeiramente para interface Windows, implementando a
maioria dos requisitos funcionais do trabalho e baseado nos diagramas de casos de uso
especificados no trabalho.
Os testes comprovam a operacionalidade do sistema como a coleta de pedidos e
consulta de informações importadas através de arquivos XML. Para os testes destas consultas
foram utilizados arquivos XML armazenados em uma pasta simulando os e-mails recebidos
do sistema de gestão, onde se observou as alterações no módulo de pedidos após a importação
dos dados e em outra pasta foi armazenado os arquivos XML exportados pelo sistema
possibilitando efetuar as consultas das tabelas de apoio pelo browser. A alteração e exclusão
de pedidos não é permitida quando o pedido estiver aprovado, para garantir a integridade das
informações processadas na empresa de confecções.
O módulo retaguarda recebe e envia e-mails com os dados das tabelas selecionadas,
através das datas de atualizações. Tabelas provenientes do módulo de pedidos como clientes,
pedidos e BSC são atualizadas conforme haja inclusão ou alteração de novos registros.
Em Silva (2007) fez-se um estudo sobre medição de desempenho baseado nas
ferramentas da produção enxuta. O estudo apresenta a relação entre indicadores estratégicos e
os indicadores operacionais, mostrando o conceito do BSC. Neste trabalho é apresentado um
sistema que, utilizando-se de consultas SQL para gerar resultados em números inteiros para
avaliação dos indicadores, torna a consulta do BSC dinâmica conforme o sistema é
alimentado pelos pedidos de venda.
Em Kracik (2002), é demonstrado o uso de arquivos XML em um protótipo utilizando
dispositivos móveis possibilitando desenvolver um servidor que armazena dados contábeis
usando o padrão estabelecido e outro aplicativo cliente que fornece e extrai as informações.
Além das tecnologias aplicadas como XML Schema que define a estrutura, conteúdo e a
semântica dos documentos XML. Neste trabalho foi utilizado comandos SQL e funções para
adquirir os dados como a soma dos itens de um pedido que exigem maior detalhamento na
geração dos nodos.
59
4 CONCLUSÕES
O sistema foi desenvolvido para plataforma Windows e Linux e cumpriu os requisitos
especificados, o modulo de pedidos permite o armazenamento e a recuperação dos dados de
clientes, pedidos e BSC, consultas de informações importantes para o representante como
comissões, faturamentos, títulos pendentes entre outras. A implementação do módulo de
retaguarda para troca de informações entre o representante e o sistema de gestão, a qual envia
e recebe emails com as informações em arquivos XML processando-os, também foi
concretizada.
As ferramentas usadas para o desenvolvimento atenderam aos requisitos necessários
para a implementação. A maioria das ferramentas é Open Source, exceto pela ferramenta
Enterprise Architect que possui sua versão licenciada na Furb.
O uso do banco Firebird foi muito importante por ter versões para o sistema
operacional Windows e Linux possibilitando a geração do mesmo programa fonte compilado
em duas plataformas diferentes.
O estudo realizado sobre a metodologia BSC proporcionou um bom conhecimento em
gestão estratégica, aliada a aplicação de seus indicadores de desempenho. Uma ferramenta
ótima para medir resultados da empresa aliado a orientação de planos de ações pré-definidos
pelo representante. O desenvolvimento desta opção proporciona ao representante que planeje
suas estratégias antes de efetuar as visitas aos clientes, orientado por seus indicadores,
podendo executar várias ações diferentes no decorrer de seu desempenho.
O conhecimento adquirido sobre a ferramenta Lazarus proporcionou uma visão sobre o
uso deste ambiente, permitindo divulgar a linguagem Object Pascal e o conceito de
ferramenta Open Source, procurando oferecer uma distribuição livre do programa, tendo
como objetivo disponibilizar seu código fonte.
4.1 EXTENSÕES
Como extensões deste trabalho podem ser sugeridas algumas opções.
O conceito BSC pode ser empregado em vários softwares de gestão estratégica,
também para aplicativos industriais e comerciais fazendo uso dos indicadores de desempenho.
60
Utilizando objetivos estratégicos, visando orientação através de ações pré-definidas, o
trabalho foca a perspectiva de cliente que possibilita ser demonstrado na aplicação em
questão. O tema BSC pode ser desenvolvido para outras aplicações que possam interagir nas
perspectivas financeiras e processos internos possibilitando finalizar com a perspectiva de
crescimento e aprendizado.
O desenvolvimento deste trabalho utilizando a ferramenta Lazarus e compilador Free
pascal, que é um projeto Open Source destinado a atender programadores adeptos ao Object
Pascal e com a versatilidade de compilação para várias plataformas com o mesmo programa
fonte, favorece a portabilidade para outras plataformas como Windows CE, Linux, MAC e
incentiva a implementação de componentes não existentes no ambiente.
A continuação deste trabalho visando a implementação do cadastro de produtos em
grade, sincronização dos dados através das tecnologias web service e a utilização de outras
ferramentas Open Source, também podem ser objeto de futuras pesquisas e desenvolvimentos.
61
REFERÊNCIAS BIBLIOGRÁFICAS
ALVAREZ, Miguel A. O que é e para que serve o SQL. São Paulo, [2004]. Disponível em:
< http://www.criarweb.com/artigos/210.php?manual=11>. Acesso em: 26 jul. 2008.
BALZANI, Haylla S. Balanced scorecard – BSC: uma ferramenta de gestão. [S.1.], [2006].
Disponível em: < http://www.administradores.com.br/artigos/balanced_scorecard_bsc_uma_
ferramenta_de_gestao/12951/>. Acesso em: 23 ago. 2008.
BORATTI, Isaias C. Programação orientada a objetos usando Delphi. 2. ed. São Paulo:
Visual Books, 2002.
CIMINO, Julio C. S. Implantação do Balanced ScoreCard (BSC) em pequenas empresas:
um estudo de caso em uma empresa de serviços em juiz de fora-MG. 2004. 50 f. Dissertação
(Mestrado em Engenharia de Produção) – Centro de Ciências Exatas e Naturais, Universidade
Federal de Santa Catarina, Florianópolis
DECARIA, Henrique M. Abstração de base de dados utilizando DAO. [S.1.], [2007].
Disponível em: <http://phpbr.wordpress.com/2007/02/06/abstracao-de-base-de-dados-
utilizando-dao/>. Acesso em: 19 mar. 2009.
FREITAS, Alfredo. A. Firebird Br. [S.1.], [2002]. Disponível em: <http://www.firebird.
com.br/index.php>. Acesso em: 28 jul. 2008.
FURTADO JUNIOR, Miguel. B. Trabalho sobre XML. Rio de Janeiro, [2005]. Disponível
em: < http://www.gta.ufrj.br/grad/00_1/miguel>. Acesso em: 20 mar. 2008.
GRAVES, Mark. Projeto de banco de dados com XML. Tradução Aldair José Coelho
Corrêa da Silva. São Paulo: Pearson, 2003.
GOMES, Rui. Free Pascal. [S.1], [2008?]. Disponível em: < http://portugalcode.com/index.
php?topic=182.0>. Acesso em: 20 mar. 2008.
KAPLAN, Robert S. NORTON, David P. A Estratégia em ação: balanced scorecard. 7. ed.
Rio de Janeiro: Campus, 1997.
KOTLER, Philip. Administração e marketing. Tradução Ailton Bonfim Brandão. São
Paulo: Atlas, 1994.
KRACIK, João. Protótipo de padrão de comunicação e armazenamento de dados
contábeis usando XML. 2002. 109 f. Trabalho de Conclusão de Curso (Bacharelado em
Ciências da Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de
Blumenau, Blumenau.
LAUDON, Kenneth. C.; LAUDON, Jane. P. Sistemas de informação gerenciais. 5. ed
Tradução Arlete Símile Marques. São Paulo: Pearson, 2004.
62
LAZARUS, Wiki. Lazarus tutorial/pt. [S.1.], [2008?]. Disponível em: <http://wiki.lazarus.
freepascal.org /Lazarus_Tutorial/pt>. Acesso em: 01 set. 2008.
MANZANO, Augusto. Free Pascal: compilador Pascal e Object Pascal de código aberto.
[S.1.], [2006]. Disponível em: < http://www.freepascal.eti.br/sobre.htm>. Acesso em: 01 ago.
2008.
SANTOS, Paulo. V. Características e especificações do SGBD Firebird 1.0. [S.1.], [2005].
Disponível em: <http://www.comunidade-firebird.org/cflp/downloads/CFLP_O014.PDF>.
Acesso em: 01 fev. 2008.
SARDAGNA, Marcelo. VAHLDICK, Adilson. Aplicações do padrão Data Access Object
(DAO) em projetos desenvolvidos em DELPHI. [S.1.], [2008]. Disponível em: <
http://www.inf.ufsc.br/erbd2008/artigos/2.pdf>. Acesso em: 15 mar. 2009.
SILVA, Thiago F. Estudo sobre sistema de medição de desempenho baseado nas
ferramentas da produção enxuta. 2007. 64 f. Trabalho de Conclusão de Curso
(Bacharelado em Engenharia de Produção) – Departamento de Engenharia de Produção,
Escola de Engenharia de São Carlos da Universidade de São Paulo, São Paulo.
VOORT, Marco. V. Cross compiling. [S.1.], [2006]. Disponível em: < http://wiki.lazarus.
freepascal.org/Cross_compiling/pt#Para_Linux_2>. Acesso em: 01 set. 2008.
WERNER, Carlos E. Ferramenta de gerenciamento para banco de dados Firebird. 2004.
50 f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) – Centro de
Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau
63
APÊNDICE A – Classe DAOGeral – parte do código referente a classe de clientes e das
buscas na tabela.
No quadro 20 é apresentado o parte do código da classe DAOGeral referente a classe
de clientes e das buscas nas tabelas.
type
// Tipo de SQL
TpSQL = (tsqlInserir, tsqlAlterar, tsqlExcluir, tsqlConsultar);
{ TDAOGeral }
TDAOGeral = class(TDataModule)
Conexao: TZConnection;
registros: TZQuery;
private
Fid: Integer;
{ private declarations }
nomeTabela: String;
campoId: String;
procedure Setid(const AValue: Integer);
protected
filtros: TStrings;
public
{ public declarations }
constructor Create;
destructor Destroy;
property id: Integer read Fid write Setid;
function BuscaDados(SQL: String): TZQuery;
procedure ExecutaComando(SQL: String);
procedure Novo();
procedure Abrir();
procedure Salvar();
procedure Proximo();
procedure Anterior();
procedure Excluir();
function MontaSQL(Tipo: TpSQL): String;
function buscaCampos(): String;
function buscaValores(): String;
function buscaCamposComValores(): String;
function buscaCondicoes(): String;
procedure initTabela(nome, campo: String);
procedure adicionarFiltro(filtro: String);
procedure limparFiltro();
procedure ClasseParaTabela(); virtual;
procedure TabelaParaClasse(); virtual;
end;
64
{ TDAOCliente }
TDAOCliente = class(TDAOGeral)
private
Fbairro: string;
Fcep: string;
Fcidade: string;
Fcnpj_cpf: string;
Fcod_cliente: integer;
Fcod_externo: string;
Fcontato: string;
Fdata_atualizacao: TDate;
Fdata_cadastro: TDate;
Fddd: string;
Femail: string;
Fendereco: string;
Ffantasia: string;
Fie_rg: string;
Finativo: Boolean;
Fobs: string;
Frazao_social: string;
Fsem_credito: Boolean;
Ftelefone: string;
Ftip_pessoa: Integer;
Fuf: string;
// controles
inativo_str: String;
sem_credito_str: String;
tip_pessoa_str: String;
// metodos
procedure Setbairro(const AValue: string);
procedure Setcep(const AValue: string);
procedure Setcidade(const AValue: string);
procedure Setcnpj_cpf(const AValue: string);
procedure Setcod_cliente(const AValue: integer);
procedure Setcod_externo(const AValue: string);
procedure Setcontato(const AValue: string);
procedure Setdata_atualizacao(const AValue: TDate);
procedure Setdata_cadastro(const AValue: TDate);
procedure Setddd(const AValue: string);
procedure Setemail(const AValue: string);
procedure Setendereco(const AValue: string);
procedure Setfantasia(const AValue: string);
procedure Setie_rg(const AValue: string);
procedure Setinativo(const AValue: Boolean);
procedure Setobs(const AValue: string);
procedure Setrazao_social(const AValue: string);
procedure Setsem_credito(const AValue: Boolean);
procedure Settelefone(const AValue: string);
procedure Settip_pessoa(const AValue: Integer);
procedure Setuf(const AValue: string);
65
public
constructor Create;
destructor Destroy;
property cod_cliente: integer read Fcod_cliente write Setcod_cliente;
property cod_externo: string read Fcod_externo write Setcod_externo;
property fantasia: string read Ffantasia write Setfantasia;
property razao_social: string read Frazao_social write Setrazao_social;
property tip_pessoa: Integer read Ftip_pessoa write Settip_pessoa;
property cnpj_cpf: string read Fcnpj_cpf write Setcnpj_cpf;
property ie_rg: string read Fie_rg write Setie_rg;
property contato: string read Fcontato write Setcontato;
property obs: string read Fobs write Setobs;
property inativo: Boolean read Finativo write Setinativo;
property sem_credito: Boolean read Fsem_credito write Setsem_credito;
property cep: string read Fcep write Setcep;
property endereco: string read Fendereco write Setendereco;
property bairro: string read Fbairro write Setbairro;
property cidade: string read Fcidade write Setcidade;
property uf: string read Fuf write Setuf;
property ddd: string read Fddd write Setddd;
property telefone: string read Ftelefone write Settelefone;
property email: string read Femail write Setemail;
property data_cadastro: TDate read Fdata_cadastro write Setdata_cadastro;
property data_atualizacao: TDate read Fdata_atualizacao write Setdata_atualizacao;
procedure ClasseParaTabela(); override;
procedure TabelaParaClasse(); override;
end;
{ TDAOCliente }
procedure TDAOCliente.Setbairro(const AValue: string);
begin
if Fbairro=AValue then exit;
Fbairro:=AValue;
end;
procedure TDAOCliente.Setcep(const AValue: string);
begin
if Fcep=AValue then exit;
Fcep:=AValue;
end;
procedure TDAOCliente.Setcidade(const AValue: string);
begin
if Fcidade=AValue then exit;
Fcidade:=AValue;
end;
procedure TDAOCliente.Setcnpj_cpf(const AValue: string);
66
begin
if Fcnpj_cpf=AValue then exit;
Fcnpj_cpf:=AValue;
end;
procedure TDAOCliente.Setcod_cliente(const AValue: integer);
begin
if Fcod_cliente=AValue then exit;
Fcod_cliente:=AValue;
end;
procedure TDAOCliente.Setcod_externo(const AValue: string);
begin
if Fcod_externo=AValue then exit;
Fcod_externo:=AValue;
end;
procedure TDAOCliente.Setcontato(const AValue: string);
begin
if Fcontato=AValue then exit;
Fcontato:=AValue;
end;
procedure TDAOCliente.Setdata_atualizacao(const AValue: TDate);
begin
if Fdata_atualizacao=AValue then exit;
Fdata_atualizacao:=AValue;
end;
procedure TDAOCliente.Setdata_cadastro(const AValue: TDate);
begin
if Fdata_cadastro=AValue then exit;
Fdata_cadastro:=AValue;
end;
procedure TDAOCliente.Setddd(const AValue: string);
begin
if Fddd=AValue then exit;
Fddd:=AValue;
end;
procedure TDAOCliente.Setemail(const AValue: string);
begin
if Femail=AValue then exit;
Femail:=AValue;
end;
procedure TDAOCliente.Setendereco(const AValue: string);
begin
if Fendereco=AValue then exit;
67
Fendereco:=AValue;
end;
procedure TDAOCliente.Setfantasia(const AValue: string);
begin
if Ffantasia=AValue then exit;
Ffantasia:=AValue;
end;
procedure TDAOCliente.Setie_rg(const AValue: string);
begin
if Fie_rg=AValue then exit;
Fie_rg:=AValue;
end;
procedure TDAOCliente.Setinativo(const AValue: Boolean);
begin
if Finativo=AValue then exit;
Finativo:=AValue;
inativo_str:=ifthen(inativo,'S','N');
end;
procedure TDAOCliente.Setobs(const AValue: string);
begin
if Fobs=AValue then exit;
Fobs:=AValue;
end;
procedure TDAOCliente.Setrazao_social(const AValue: string);
begin
if Frazao_social=AValue then exit;
Frazao_social:=AValue;
end;
procedure TDAOCliente.Setsem_credito(const AValue: Boolean);
begin
if Fsem_credito=AValue then exit;
Fsem_credito:=AValue;
sem_credito_str:=ifthen(sem_credito, 'S', 'N');
end;
procedure TDAOCliente.Settelefone(const AValue: string);
begin
if Ftelefone=AValue then exit;
Ftelefone:=AValue;
end;
procedure TDAOCliente.Settip_pessoa(const AValue: Integer);
begin
if Ftip_pessoa=AValue then exit;
68
Ftip_pessoa:=AValue;
tip_pessoa_str:=IfThen(tip_pessoa = 0,'F','J');
end;
procedure TDAOCliente.Setuf(const AValue: string);
begin
if Fuf=AValue then exit;
Fuf:=AValue;
end;
constructor TDAOCliente.Create;
begin
inherited Create;
initTabela('clientes', 'cod_cliente');
end;
destructor TDAOCliente.Destroy;
begin
inherited Destroy;
end;
procedure TDAOCliente.ClasseParaTabela();
begin
if id > 0 then
registros.FieldByName(campoId).AsInteger := id
else
registros.FieldByName(campoId).Clear;
registros.FieldByName('cod_externo').AsString := cod_externo;
registros.FieldByName('dsc_fantasia').AsString := fantasia;
registros.FieldByName('dsc_razao').AsString := razao_social;
registros.FieldByName('flg_tipo_pessoa').AsString := tip_pessoa_str;
registros.FieldByName('dsc_cnpj_cpf').AsString := cnpj_cpf;
registros.FieldByName('dsc_ie_rg').AsString := ie_rg;
registros.FieldByName('dsc_contato').AsString := contato;
registros.FieldByName('dsc_obs').AsString := obs;
registros.FieldByName('flg_inativo').AsString := inativo_str;
registros.FieldByName('flg_credito').AsString := sem_credito_str;
registros.FieldByName('dsc_cep').AsString := cep;
registros.FieldByName('dsc_endereco').AsString := endereco;
registros.FieldByName('dsc_bairro').AsString := bairro;
registros.FieldByName('dsc_cidade').AsString := cidade;
registros.FieldByName('dsc_uf').AsString := uf;
registros.FieldByName('dsc_ddd').AsString := ddd;
registros.FieldByName('dsc_telefone').AsString := telefone;
registros.FieldByName('dsc_email').AsString := email;
registros.FieldByName('dta_cadastro').AsDateTime := data_cadastro;
registros.FieldByName('dta_atualizacao').AsDateTime:= data_atualizacao;
end;
procedure TDAOCliente.TabelaParaClasse();
69
begin
if registros.Active and (registros.RecordCount > 0) then
begin
id := registros.FieldByName(campoId).AsInteger;
cod_externo := registros.FieldByName('cod_externo').AsString;
fantasia := registros.FieldByName('dsc_fantasia').AsString;
razao_social:= registros.FieldByName('dsc_razao').AsString;
if registros.FieldByName('flg_tipo_pessoa').AsString = 'F' then
tip_pessoa:= 0
else
tip_pessoa:= 1;
cnpj_cpf := registros.FieldByName('dsc_cnpj_cpf').AsString;
ie_rg := registros.FieldByName('dsc_ie_rg').AsString;
contato := registros.FieldByName('dsc_contato').AsString;
obs := registros.FieldByName('dsc_obs').AsString;
inativo := registros.FieldByName('flg_inativo').AsString = 'S';
sem_credito := registros.FieldByName('flg_credito').AsString = 'S';
cep := registros.FieldByName('dsc_cep').AsString;
endereco := registros.FieldByName('dsc_endereco').AsString;
bairro := registros.FieldByName('dsc_bairro').AsString;
cidade := registros.FieldByName('dsc_cidade').AsString;
uf := registros.FieldByName('dsc_uf').AsString;
ddd := registros.FieldByName('dsc_ddd').AsString;
telefone := registros.FieldByName('dsc_telefone').AsString;
email := registros.FieldByName('dsc_email').AsString;
data_cadastro := registros.FieldByName('dta_cadastro').AsDateTime;
data_atualizacao := registros.FieldByName('dta_atualizacao').AsDateTime;
end;
end;
function TDAOGeral.MontaSQL(Tipo: TpSQL): String;
begin
case Tipo of
tsqlConsultar: Result := 'SELECT ' + buscaCampos() + ' FROM ' + nomeTabela +
buscaCondicoes();
tsqlInserir: Result := 'INSERT INTO ' + nomeTabela + '(' + buscaCampos() + ') VALUES
(' + buscaValores() + ')';
tsqlAlterar: Result := 'UPDATE ' + nomeTabela + ' SET ' + buscaCamposComValores()
+ ' WHERE ' + buscaCondicoes();
tsqlExcluir: Result := 'DELETE FROM ' + nomeTabela + ' WHERE ' +
buscaCondicoes();
end;
end;
function TDAOGeral.BuscaDados(SQL: String): TZQuery;
var tempQuery: TZQuery;
begin
tempQuery := TZQuery.Create(self);
tempQuery.Connection := Conexao;
tempQuery.SQL.Text := SQL;
tempQuery.Open;
70
Result := tempQuery;
end;
function TDAOGeral.buscaValores(): String;
var i: Integer;
begin
for i := 0 to registros.Fields.Count -1 do
begin
try
if i = 0 then
Result := '''' + registros.FieldByName(registros.Fields[i].FieldName).Value + ''''
else
Result := ', ''' + registros.FieldByName(registros.Fields[i].FieldName).Value + '''';
except
Erro('Quantidade de campos diferente da quantidade de valores!');
end;
end;
end;
function TDAOGeral.buscaCamposComValores(): String;
var i: Integer;
begin
for i := 0 to registros.Fields.Count -1 do
begin
try
if i = 0 then
Result := registros.Fields[i].FieldName + ' = ''' +
registros.FieldByName(registros.Fields[i].FieldName).Value + ''''
else
Result := ', ' + registros.Fields[i].FieldName + ' = ''' +
registros.FieldByName(registros.Fields[i].FieldName).Value + '''';
except
Erro('Quantidade de campos diferente da quantidade de valores!');
end;
end;
end;
function TDAOGeral.buscaCondicoes(): String;
var i: Integer;
begin
if filtros.Count > 0 then Result := ' WHERE ';
for i := 0 to filtros.Count -1 do
begin
if i = 0 then
Result := Result + filtros[i]
else
Result := Result + ' AND ' + filtros[i];
end;
end;
procedure TDAOGeral.ExecutaComando(SQL: String);
71
var tempQuery: TZQuery;
begin
tempQuery := TZQuery.Create(self);
try
tempQuery.Connection := Conexao;
tempQuery.SQL.Text := SQL;
tempQuery.ExecSQL;
finally
FreeAndNil(tempQuery);
end;
end;
Quadro 20 – Classe DAOGeral – Cliente e busca de dados
72
APÊNDICE B – Script para geração do banco de dados Firebird
No quadro 21 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de clientes.
---- TABELA DE CLIENTES
CREATE TABLE CLIENTES (
COD_CLIENTE integer NOT NULL auto,
COD_CLIENTE_EXTERNO char(10),
FANTASIA varchar(30) NOT NULL,
RAZAO_SOCIAL varchar(90) NOT NULL,
FLG_TIPO_PESSOA char(1) NOT NULL,
CNPJ_CPF varchar(19) NOT NULL,
IE_RG varchar(19) NOT NULL,
CONTATO varchar(50),
OBS varchar(100),
FLG_INATIVO char(1),
FLG_CREDITO char(1),
CEP char(9),
ENDERECO varchar(90),
BAIRRO varchar(30),
CIDADE varchar(40),
UF char(2),
DDD char(3),
TELEFONE char(10),
EMAIL varchar(60),
DTA_CADASTRO date NOT NULL,
DTA_ATUALIZACAO date NOT NULL
)
;
Quadro 21 – Script de banco de dados - tabela de clientes
No quadro 22 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de condição de pagamento e parcelas.
---- TABELA DE CONDICAO DE PAGAMENTO
CREATE TABLE COND_PGTO (
COD_PGTO char(3),
DSC_COND_PGTO varchar (40),
DESC_COND_PGTO varchar(40)
)
;
---- TABELA DAS PARCELAS DAS CONDICOES DE PAGAMENTO
CREATE TABLE PARCELAS_COND_PGTO(
ID_COND_PGTO char(3),
COD_PARCELA char(2),
DIAS_PARCELA integer NOT NULL,
PORC_PARCELA numeric (3,2)
)
;
Quadro 22 – Script de banco de dados - tabela de condição de pagamento
No quadro 23 é apresentado o script do banco de dados utilizado para gerar o banco de
73
dados para o banco Firebird da tabela de pedidos e itens pedidos.
--- TABELA DE PEDIDOS
CREATE TABLE PEDIDOS (
COD_PEDIDO integer NOT NULL auto,
DTA_EMISSAO char(10) NOT NULL,
DTA_ENTREGA char(10) NOT NULL,
STATUS_PEDIDO varchar(20),
PEDIDO_EXTERNO char(10),
PEDIDO_CLIENTE char(10),
PER_COMISSAO numeric (8,2),
FLG_APROVADO char(1),
PERC_DESCONTO numeric (8,2),
ID_CLIENTE integer NOT NULL,
ID_TRANSPORTADORA char(6) NOT NULL,
ID_COND_PGTOS char(3) NOT NULL,
ID_TABELA_PRECO char(3) NOT NULL,
DTA_CADASTRO char(10) NOT NULL,
DTA_ATUALIZACAO char(10) NOT NULL
)
;
--- TABELA DOS ITENS DE PEDIDO
CREATE TABLE ITENS_PEDIDOS (
ID_PEDIDO integer NOT NULL,
COD_ITEM_PEDIDO integer NOT NULL,
ID_PRODUTO char(10) NOT NULL,
QTD_ITEM_PEDIDO integer NOT NULL,
VLR_ITEM_PEDIDO numeric (8,2),
PRECO numeric (8,2) NOT NULL,
PER_DESCONTO numeric (8,2)
)
;
Quadro 23 – Script de banco de dados - tabela de pedidos
No quadro 24 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de faturamento.
74
---- TABELA DE FATURAMENTO
CREATE TABLE FATURAMENTOS (
COD_NF integer NOT NULL auto,
NRO_NF char(10) NOT NULL,
VLR_NF numeric (8,2) NOT NULL,
DTA_EMISSAO char(10) NOT NULL,
ID_TRANSPORTADORA varchar(50),
PESO_BRUTO numeric (8,2),
PESO_LIQUIDO numeric (8,2),
PER_COMISSAO numeric (8,2),
FRETE char(3),
ID_CLIENTE integer
ID_PEDIDO integer NOT NULL
)
;
--- TABELA DOS ITENS DO FATURAMENTO
CREATE TABLE FATURAMENTOS_ITEM (
COD_FATURAMENTOS_ITEM integer NOT NULL auto,
ID_NF integer NOT NULL ,
ID_NRO_NF char(10) NOT NULL,
NUM_ITEM integer NOT NULL,
PRODUTO char(10) NOT NULL,
PRECO numeric (8,2) NOT NULL,
QTD_ITEM integer NOT NULL,
VALOR_ITEM numeric (8,2) NOT NULL,
ID_COD_PEDIDO integer NOT NULL,
ID_ITEM_PEDIDO integer NOT NULL
)
;
Quadro 24 – Script de banco de dados - tabela de faturamento
No quadro 25 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de clientes.
--- TABELA DE TITULOS
CREATE TABLE TITULOS (
ID_NF integer NOT NULL,
NRO_FATURA char(10) NOT NULL,
NRO_PARCELA char(2) NOT NULL,
VLR_FATURA numeric (8,2) NOT NULL,
DTA_EMISSAO char(10) NOT NULL,
VLR_RECEBIDO numeric (8,2),
DTA_VENCIMENTO date,
ID_CLIENTE integer NOT NULL
)
;
Quadro 25 – Script de banco de dados - tabela de titulos
No quadro 26 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de comissões.
75
--- TABELA DE COMISSAO
CREATE TABLE COMISSOES (
COD_COMISSAO integer NOT NULL,
ID_NF integer NOT NULL,
DTA_COMISSAO char(10) NOT NULL,
VLR_COMISSAO numeric (8,2) NOT NULL,
ID_CLIENTE integer NOT NULL
)
;
Quadro 26 – Script de banco de dados - tabela de comissão
No quadro 27 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de produtos e tabela de preços.
--- TABELA DE PREÇO
CREATE TABLE TABELA_PRECOS (
COD_TABELA_PRECO Char(3) NOT NULL,
DSC_TABELA_PRECO varchar(50),
)
;
--- TABELA DE PRODUTOS
CREATE TABLE PRODUTOS (
COD_PRODUTO char(10) NOT NULL,
DSC_PRODUTO varchar(50) NOT NULL,
INATIVO char(1),
)
;
--- TABELA DE PRECO_PRODUTO
CREATE TABLE PRODUTOS_PRECOS(
COD_TABELA_PRECO Char(3) NOT NULL,
COD_PRODUTO char(10) NOT NULL,
VLR_PRECO_PRODUTO numeric(8,2)
)
;
Quadro 27 – Script de banco de dados - tabela de produtos e tabela de preços
No quadro 28 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de transportadora.
--- TABELA DE TRANSPORTADORA
CREATE TABLE TRANSPORTADORAS (
COD_TRANSPORTADORA char(5),
NOM_TRANSPORTADORA varchar(50),
DDD char(3),
FONE char (10),
EMAIL char (60)
)
;
Quadro 28 – Script de banco de dados - tabela de transportadora
No quadro 29 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird da tabela de BSC.
76
--- TABELA DE BALANCED SCORECARD
CREATE TABLE BSC (
COD_BSC integer NOT NULL auto,
COMANDO_SQL varchar(100),
MINIMO integer NOT NULL,
META integer NOT NULL,
OBJETIVO varchar(100),
INDICADOR varchar(100),
DSC_META varchar(100),
ACAO_PROSPECT_A varchar(100),
ACAO_PROSPECT_B varchar(100),
ACAO_PROSPECT_C varchar(100),
NOTA_ACOMPANHAMENTO varchar (100),
DTA_CADASTRO date NOT NULL,
DTA_ATUALIZACAO date NOT NULL
)
;
Quadro 29 – Script de banco de dados - tabela de BSC.
No quadro 30 é apresentado o script do banco de dados utilizado para gerar o banco de
dados para o banco Firebird das chaves primárias.
77
--------- CRIAÇÃO DAS CHAVES PRIMARIAS
ALTER TABLE CLIENTES ADD CONSTRAINT PK_CLIENTES
PRIMARY KEY (COD_CLIENTE)
;
ALTER TABLE COND_PGTO ADD CONSTRAINT PK_COND_PGTO
PRIMARY KEY (COD_PGTO)
;
ALTER TABLE PARCELAS_COND_PGTO ADD CONSTRAINT PK_PARCELAS_COND_PGTO
PRIMARY KEY (ID_COND_PGTO, COD_PARCELA)
;
ALTER TABLE PEDIDOS ADD CONSTRAINT PK_PEDIDOS
PRIMARY KEY (COD_PEDIDO)
;
ALTER TABLE ITENS_PEDIDO ADD CONSTRAINT PK_ITENS_PEDIDO
PRIMARY KEY (ID_PEDIDO, COD_ITEM_PEDIDO)
;
ALTER TABLE FATURAMENTO ADD CONSTRAINT PK_FATURAMENTO
PRIMARY KEY (COD_NF)
;
ALTER TABLE FATURAMENTO_ITEM ADD CONSTRAINT PK_FATURAMENTO_ITEM
PRIMARY KEY (ID_NF, NUM_ITEM)
;
ALTER TABLE TITULOS ADD CONSTRAINT PK_TITULOS
PRIMARY KEY (COD_NF)
;
ALTER TABLE COMISSAO ADD CONSTRAINT PK_COMISSAO
PRIMARY KEY (ID_NF)
;
ALTER TABLE PRODUTOS ADD CONSTRAINT PK_PRODUTOS
PRIMARY KEY (COD_PRODUTO)
;
ALTER TABLE TABELA_PRECO ADD CONSTRAINT PK_TABELA_PRECO
PRIMARY KEY (COD_TABELA_PRECO)
;
ALTER TABLE PRECO_PRODUTO ADD CONSTRAINT PK_PRECO_PRODUTO
PRIMARY KEY (COD_TABELA_PRECO, COD_PRODUTO)
;
ALTER TABLE TRANSPORTADORA ADD CONSTRAINT PK_TRANSPORTADORA
PRIMARY KEY (COD_TRANSPORTADORA)
;
ALTER TABLE BSC ADD CONSTRAINT PK_BSC
PRIMARY KEY (COD_BSC)
;
Quadro 30 – Script de banco de dados - chaves primárias
78
APÊNDICE C – Arquivos XML de clientes e pedidos
No quadro 31 é apresentado o arquivo XML de clientes que é exportado ou importado
pelo modulo retaguarda.
<?xml version="1.0"?>
<cadastro>
<cliente id="4">
<cod_externo>100234</cod_externo>
<dsc_fantasia>A MODA</dsc_fantasia>
<dsc_razao>ELIANE CRISTINA THOMAZINI BORSOI ME</dsc_razao>
<flg_tipo_pessoa>J</flg_tipo_pessoa>
<dsc_cnpj_cpf>03.500.213/0001-70</dsc_cnpj_cpf>
<dsc_ie_rg>082.017.557</dsc_ie_rg>
<dsc_contato>PEDRO</dsc_contato>
<dsc_obs></dsc_obs>
<flg_inativo>N</flg_inativo>
<flg_credito>N</flg_credito>
<dsc_cep>29850-000</dsc_cep>
<dsc_endereco>AV. SENADOR EURICO REZENDE, 924-C</dsc_endereco>
<dsc_bairro>CENTRO</dsc_bairro>
<dsc_cidade>BOA ESPERANCA</dsc_cidade>
<dsc_uf>ES</dsc_uf>
<dsc_ddd>027</dsc_ddd>
<dsc_telefone>3768-1044</dsc_telefone>
<dsc_email>[email protected]</dsc_email>
<dta_cadastro>2009-02-11</dta_cadastro>
<dta_atualizacao>2009-02-11</dta_atualizacao>
</cliente>
</cadastro>
Quadro 31 – Arquivo XML de clientes
No quadro 32 é apresentado o arquivo XML de pedidos que é exportado ou importado
pelo modulo retaguarda.
<?xml version="1.0"?>
<cadastro>
<pedido id="1">
<dta_emissao>2009-09-20</dta_emissao>
<dta_entrega>2009-01-10</dta_entrega>
<flg_status_pedido> </flg_status_pedido>
<cod_pedido_externo>000234</cod_pedido_externo>
<vlr_perc_comissao>10</vlr_perc_comissao>
<flg_aprovado>N</flg_aprovado>
<vlr_perc_desconto>0</vlr_perc_desconto>
<id_cliente>3</id_cliente>
<id_transportadora>001</id_transportadora>
<id_cond_pgto>002</id_cond_pgto>
<id_tabela_preco>001</id_tabela_preco>
<dta_cadastro>2008-10-13</dta_cadastro>
<dta_atualizacao>2008-11-20</dta_atualizacao>
79
<itenspedido id_pedido="1">
<id_produto>01.01.0001</id_produto>
<cod_pedido_item>1</cod_pedido_item>
<qtd_item_pedido>999</qtd_item_pedido>
<vlr_item_pedido>260</vlr_item_pedido>
<vlr_preco>20</vlr_preco>
<vlr_perc_desconto>0</vlr_perc_desconto>
</itenspedido>
<itenspedido id_pedido="2">
<id_produto>03.01.0001</id_produto>
<cod_pedido_item>2</cod_pedido_item>
<qtd_item_pedido>888</qtd_item_pedido>
<vlr_item_pedido>900</vlr_item_pedido>
<vlr_preco>50</vlr_preco>
<vlr_perc_desconto>0</vlr_perc_desconto>
</itenspedido>
</pedido>
</cadastro>
Quadro 32 – Arquivo XML de pedidos