desenvolvimento de um mÓdulo de planejamento de...
TRANSCRIPT
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE SISTEMAS DE INFORMAÇÃO – BACHARELADO
DESENVOLVIMENTO DE UM MÓDULO DE
PLANEJAMENTO DE COMPRAS APLICANDO O
CONCEITO DE OPEN TO BUY
FABRÍCIO DE SOUZA
BLUMENAU 2009
2009/1-05
FABRÍCIO DE SOUZA
DESENVOLVIMENTO DE UM MÓDULO DE
PLANEJAMENTO DE COMPRAS APLICANDO O
CONCEITO DE OPEN TO BUY
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 Sistemas de Informação— Bacharelado.
Prof. Wilson Pedro Carli, Mestre - Orientador
BLUMENAU 2009
2009/1-05
DESENVOLVIMENTO DE UM MÓDULO DE
PLANEJAMENTO DE COMPRAS APLICANDO O
CONCEITO DE OPEN TO BUY
Por
FABRÍCIO 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. Wilson Pedro Carli, Mestre – Orientador, FURB
______________________________________________________ Membro: Prof. Alexander Roberto Valdameri, Mestre – FURB
______________________________________________________ Membro: Prof. Everaldo Artur Grahl, Mestre – FURB
Blumenau, 09 de julho de 2009
Dedico este trabalho à minha família, pelo apoio irrestrito em todos os momentos de minha vida, e a todos que, de alguma forma, contribuíram para a conclusão de mais esta etapa.
AGRADECIMENTOS
Agradeço a Deus pela vida, por estar presente em todos os momentos, e por ter me
proporcionado saúde e inteligência para conclusão deste trabalho.
Ao meu pai Jair, minha mãe Lidia e à minha irmã Elaís, pelo imenso amor e atenção
com que sempre me trataram, e pela paciência que tiveram durante o último ano de conclusão
deste curso.
Agradeço também, e muito, pela determinação de meus pais, que ao longo da vida,
com muito esforço, proporcionaram a base da minha educação e personalidade.
À minha namorada Cintya Sayuri Abiko, por todo o amor dedicado à minha pessoa,
pelo apoio e incentivo, e também pelos incontáveis dias que deixei de estar ao seu lado para
que este trabalho pudesse ser concretizado.
Aos meus amigos e colegas de turma que me ajudaram durante os anos que passamos
juntos.
Ao professor e amigo Marcos Rogério Cardoso, por ter sido meu orientador na
primeira etapa da elaboração deste trabalho, e por ter acreditado e apoiado esta idéia.
Ao meu orientador, professor Wilson Pedro Carli, pela amizade, confiança e
continuidade dada a este trabalho.
Aos demais professores que estiveram presentes durante esta caminha, pelo grande
conhecimento compartilhado.
Aos meus companheiros de desenvolvimento do módulo Comercial do Sistema
Sapiens, em especial, o supervisor deste trabalho, Sr. Fernando da Silva, por ter acreditado e
dado todo o apoio e conhecimento necessário durante a sua realização.
Aos meus parceiros do módulo de Compras, Jonas Ivan de Abreu e Maikon Frech, por
proporcionarem um grande conhecimento e auxílio, os quais foram muito importantes para a
concretização deste trabalho.
Ao gerente de sistemas da Senior Sistemas Corporativos Ltda, Sr. Agnaldo Montibeler,
por permitir a utilização do Sistema Sapiens e toda a tecnologia da Senior necessária para a
realização deste trabalho.
Aos meus amigos de trabalho, Thiago Wilvert e Mabel Oackley Molina, pela ajuda e
incentivo.
A todos os demais colegas da Senior Sistemas Corporativos, que embora não
mencionados nominalmente, sabem o quão importante foram os auxílios recebidos.
À Senior Sistemas Corporativos como um todo, pelos desafios vividos diariamente e
pelo conhecimento por eles proporcionados.
À minha amiga Giovana Santos, pela ajuda e suas valiosas dicas.
Aos autores dos livros que li durante a realização deste trabalho, certamente seus
conhecimentos foram de grande valia.
E a todas as outras pessoas que embora não citadas nominalmente, contribuíram para a
realização deste trabalho.
A todos vocês, o meu sincero muito obrigado!
“O mal que os homens fazem vive para sempre.”
The evil that men do – Iron Maiden
RESUMO
O presente trabalho descreve os procedimentos utilizados na elaboração de um sistema de planejamento de compras para a área comercial de uma empresa, aplicando o conceito de Open to Buy no Sistema de Gestão Empresarial Sapiens da empresa Senior Sistemas Corporativos Ltda. A aplicação do estudo acontece em forma de desenvolvimento de um módulo de planejamento de compras, onde os gestores poderão planejar suas compras baseando-se em um orçamento financeiro para os materiais comprados, a ser administrado em um determinado período.
Palavras-chave: Compras. Planejamento de compras. Open to buy.
ABSTRACT
This paper describes the procedures used to develop a purchasing planning system for the commercial area of a company, applying the Open to Buy concept in Sapiens E.R.P. (Enterprise Resource Planning) of Senior Corporate Systems Ltda. The application of this study case is in how to develop a planning purchases module, where the administrators can plan their purchases based on a financial budget for materials purchased, to be administered in a certain period.
Key Words: Purchases, Purchases Planning, Open to buy.
LISTA DE ILUSTRAÇÕES
Quadro 1 – Evolução da Administração de Materiais .............................................................. 20
Quadro 2 – Comparativo entre as atividades da área de compras no passado e no presente ... 21
Quadro 3 – Meta de Compras do mês ...................................................................................... 29
Quadro 4 – Exemplo simplificado da lógica do orçamento de compras .................................. 29
Quadro 5 – Cálculo do Open to Buy para o mês corrente ........................................................ 31
Quadro 6 – Cálculo do Open to Buy dos próximos meses ....................................................... 31
Quadro 7 – Exemplo de controle do Open to Buy .................................................................... 32
Figura 1 – Divisão dos módulos existentes no Sistema Sapiens .............................................. 36
Figura 2 – Menu principal do Sistema Sapiens ........................................................................ 37
Figura 3 – Fluxograma do sub-módulo compras do Sistema Sapiens ...................................... 40
Figura 4 – Exemplo de geração de Nota Fiscal de Entrada via Ordem de Compra no Sistema
Sapiens ................................................................................................................... 42
Figura 5 – Fluxograma do sub-módulo vendas do Sistema Sapiens ........................................ 43
Figura 6 – Fluxograma do sub-módulo estoques do Sistema Sapiens ..................................... 45
Figura 7 – Planejamento integrado de mercadorias e sortimento na solução SAP Retail MAP
............................................................................................................................... 47
Quadro 8 – Requisitos funcionais ............................................................................................. 51
Quadro 9 – Requisitos não funcionais ...................................................................................... 51
Figura 8 – Diagrama de casos de uso gerente de compras ....................................................... 52
Figura 9 – Diagrama de casos de uso comprador ..................................................................... 54
Figura 10 – Pacotes do módulo de planejamento de compras .................................................. 56
Figura 11 – Pacote ObjetosPlanejamento ..................................................................... 57
Figura 12 – Pacote InterfacesPlanejamento .............................................................. 59
Figura 13 – Pacote AuxiliaresPlanejamento .............................................................. 61
Figura 14 – Diagrama de estados da classe TPlanejamento .............................................. 62
Figura 15 – Diagrama de atividades do planejamento de compras .......................................... 64
Figura 16 – Diagrama entidade relacionamento ....................................................................... 66
Figura 17 – Interface da ferramenta CBDS .............................................................................. 68
Figura 18 – Interface do gerador de relatórios do Sistema Sapiens ......................................... 69
Figura 19 – Menu do módulo de planejamento de compras..................................................... 70
Figura 20 – Tela de seleção dos relatórios gerais do módulo Comercial ................................. 71
Figura 21 – Tela de permissões de acesso do Sistema Sapiens ................................................ 71
Figura 22 – Tela de cadastro de planejamentos de compras .................................................... 73
Figura 23 – Exemplo de hierarquia de produtos existente no Sistema Sapiens ....................... 75
Figura 24 – Exemplo de hierarquia de produtos utilizando agrupamento de produtos ............ 75
Figura 25 – Mensagem de aviso para escolha correta do início de uma quinzena ................... 76
Figura 26 – Mensagem de confirmação para aplicação correta da data final da quinzena ...... 76
Figura 27 – Mensagem de advertência para a não utilização de período passado ................... 77
Figura 28 – Exemplo de dados do cabeçalho já informados em um planejamento.................. 77
Figura 29 – Tela de cálculo do OTB para período corrente ..................................................... 78
Figura 30 – Tela de cálculo do OTB para período futuro ........................................................ 79
Quadro 10 – Campos da grid de “Itens do Planejamento” ....................................................... 81
Figura 31 – Tela de base para geração do planejamento de compras....................................... 81
Figura 32 – Exemplo de histórico de compras ......................................................................... 82
Figura 33 – Exemplo de histórico utilizando tipo de período quinzenal .................................. 84
Figura 34 – Exemplo de histórico utilizando tipo de período mensal ...................................... 84
Figura 35 – Consulta de produto base para planejamento via tela de pesquisa de registro ...... 85
Figura 36 – Itens do planejamento após utilização da base para geração ................................ 86
Figura 37 – Valores e saldos dos itens de planejamento .......................................................... 86
Figura 38 – Tela de cadastro de ordens de compra .................................................................. 88
Figura 39 – Aba de Produtos do cadastro de ordens de compra............................................... 88
Figura 40 – Exemplo de aviso de produto não planejado ........................................................ 89
Figura 41 – Exemplo de bloqueio de compra de produto não planejado ................................. 89
Figura 42 – Exemplo de aviso de produto com condição de pagamento não planejada .......... 89
Figura 43 – Exemplo de bloqueio de compra de produto com condição de pagamento não
planejada ................................................................................................................ 90
Figura 44 – Item de produto digitado na ordem de compra ..................................................... 90
Figura 45 – Relacionamento de um item de planejamento com item de ordem de compra ..... 91
Figura 46 – Demais informações disponibilizadas através do relacionamento ........................ 91
Figura 47 – Informações atualizadas no planejamento de compras ......................................... 92
Figura 48 – Exemplo de falta de saldo financeiro para o produto planejado ........................... 93
Figura 49 – Exemplo de falta de saldo físico para o produto planejado .................................. 93
Figura 50 – Exemplo de falta de saldo financeiro para a origem de produto planejada .......... 93
Figura 51 – Consistência efetuada na alteração de quantidade de um item de planejamento já
utilizado ................................................................................................................. 94
Figura 52 – Consistência efetuada na alteração de valor de um item de planejamento já
utilizado ................................................................................................................. 94
Figura 53 – Consistência efetuada na tentativa de inativação de um planejamento de compras
já utilizado ............................................................................................................. 94
Figura 54 – Consistência efetuada na tentativa de exclusão de um planejamento de compras já
utilizado ................................................................................................................. 95
Figura 55 – Consistência efetuada na tentativa de alteração do código de origem de um item
utilizado ................................................................................................................. 95
Figura 56 – Consistência efetuada na tentativa de exclusão de um item já utilizado ............... 95
Figura 57 – Consistência efetuada na tentativa de ativação de um planejamento de compras já
finalizado ............................................................................................................... 95
Figura 58 – Tela de consulta de ordens de compra da nota fiscal de entrada .......................... 96
Figura 59 – Aba de Produtos do cadastro de notas fiscais de entrada ...................................... 97
Figura 60 – Tela de consulta de planejamentos de compras .................................................... 98
Figura 61 – Tela de consulta de quantidades e valores já utilizados (NFEs) ........................... 99
Figura 62 – Tela de consulta de saldos disponíveis para compras ......................................... 100
Figura 63 – Demais informações da consulta de saldos disponíveis para compras ............... 101
Figura 64 – Tela de consulta de desempenho com relação às vendas .................................... 103
Figura 65 – Demais informações da grid de “Itens Detalhados” da consulta de desempenho
com relação às vendas ......................................................................................... 104
Figura 66 – Relatório resumido de planejamentos de compras .............................................. 105
Figura 67 – Relatório detalhado de planejamentos de compras ............................................. 106
Quadro 11 – Tabela EMPRESA ............................................................................................. 115
Quadro 12 – Tabela FILIAL ................................................................................................... 115
Quadro 13 – Tabela PLANEJCOMPRAS .............................................................................. 116
Quadro 14 – Tabela ITENSPLANEJAMENTO .................................................................... 116
Quadro 15 – Tabela ORDEMCOMPRA ................................................................................ 117
Quadro 16 – Tabela ITENSPROOC ....................................................................................... 117
Quadro 17 – Tabela NFENTRADA ....................................................................................... 117
Quadro 18 – Tabela ITENSPRONFE ..................................................................................... 118
Quadro 19 – Código fonte dos métodos mais relevantes da classe TPlanejamento ............... 124
Quadro 20 – Código fonte dos métodos mais relevantes da classe TItemPlanejamento ....... 125
Quadro 21 – Código fonte dos métodos mais relevantes da classe Frm_CadastraPlanejamento
............................................................................................................................. 127
Quadro 22 – Código fonte do método Mostrar da classe Frm_BasePlanejamento ................ 144
LISTA DE SIGLAS
CBDS – Central de Banco de Dados Senior
CTRC – Conhecimento de Transporte Rodoviário de Cargas
EA – Enterprise Architect
ECF – Emissor de Cupom Fiscal
ERP – Enterprise Resource Planning
IDV – Instituto para Desenvolvimento do Varejo
NFE – Nota Fiscal de Entrada
OC – Ordem de Compra
OTB – Open to Buy
PDV – Ponto de Venda
RF – Requisitos Funcionais
RH – Recursos Humanos
RNF – Requisitos Não Funcionais
SEBRAE – Serviço Brasileiro de Apoio às Micro e Pequenas Empresas
SGBD – Sistema Gerenciador de Banco de Dados
SGQ – Sistema de Gestão da Qualidade
SIG – Sistema de Informação Gerencial
SQL – Structured Query Language
SVCL – Senior Visual Component Library
TEF – Transferência Eletrônica de Fundos
UML – Unified Modeling Language
SUMÁRIO
1 INTRODUÇÃO .................................................................................................................. 17
1.1 OBJETIVOS DO TRABALHO ........................................................................................ 18
1.2 ESTRUTURA DO TRABALHO ...................................................................................... 18
2 FUNDAMENTAÇÃO TEÓRICA .................................................................................... 19
2.1 ADMINISTRAÇÃO DE MATERIAIS ............................................................................ 19
2.2 COMPRAS NO CONTEXTO EMPRESARIAL .............................................................. 20
2.2.1 Varejo: Compras no segmento comercial ....................................................................... 23
2.3 PLANEJAMENTO DE COMPRAS ................................................................................. 27
2.3.1 Organização financeira de compras x Objetivos da alta administração .......................... 27
2.3.2 Orçamento de compras .................................................................................................... 28
2.3.3 Open to Buy ..................................................................................................................... 30
2.3.4 Planejamento unitário das compras ................................................................................. 32
2.3.5 Como comprar bem utilizando o planejamento de compras na visão do SEBRAE ....... 33
2.4 SISTEMA SAPIENS ......................................................................................................... 35
2.4.1 Módulo Comercial do Sistema Sapiens .......................................................................... 38
2.4.1.1 Compras ........................................................................................................................ 39
2.4.1.1.1 Ordem de Compra (OC) ........................................................................................... 40
2.4.1.1.2 Nota Fiscal de Entrada (NFE) .................................................................................. 41
2.4.1.2 Vendas .......................................................................................................................... 42
2.4.1.3 Estoques ........................................................................................................................ 44
2.4.1.4 Distribuição ................................................................................................................... 45
2.4.1.5 Transporte ..................................................................................................................... 46
2.5 TRABALHOS CORRELATOS ........................................................................................ 47
3 DESENVOLVIMENTO DO MÓDULO DE PLANEJAMENTO DE COMPRA S..... 49
3.1 REQUISITOS .................................................................................................................... 50
3.1.1 Requisitos funcionais ...................................................................................................... 50
3.1.2 Requisitos não funcionais ............................................................................................... 51
3.2 ESPECIFICAÇÃO ............................................................................................................ 51
3.2.1 Diagramas de Casos de Uso ............................................................................................ 52
3.2.1.1 Diagrama de Casos de Uso do Gerente de Compras .................................................... 52
3.2.1.2 Diagrama de Casos de Uso do Comprador ................................................................... 53
3.2.2 Diagramas de Classes ...................................................................................................... 55
3.2.2.1 Pacote ObjetosPlanejamento ............................................................................. 56
3.2.2.2 Pacote InterfacesPlanejamento ...................................................................... 58
3.2.2.3 Pacote AuxiliaresPlanejamento ...................................................................... 60
3.2.3 Diagrama de Estados ....................................................................................................... 62
3.2.4 Diagrama de Atividades .................................................................................................. 63
3.2.5 Diagrama Entidade Relacionamento ............................................................................... 65
3.3 IMPLEMENTAÇÃO ........................................................................................................ 66
3.3.1 Técnicas e ferramentas utilizadas.................................................................................... 67
3.3.1.1 Central de Banco de Dados Senior (CBDS) ................................................................. 68
3.3.1.2 Gerador de Relatórios Sapiens ...................................................................................... 69
3.3.2 Operacionalidade da implementação .............................................................................. 69
3.3.2.1 Tela de “Cadastro de Planejamentos de Compras” ...................................................... 72
3.3.2.2 Processo de abatimento de saldos via tela de “Cadastro de Ordens de Compra” ......... 87
3.3.2.3 Processo de relacionamento Ordem de Compra – Nota Fiscal de Entrada .................. 96
3.3.2.4 Tela de “Consulta de Planejamentos de Compras” ...................................................... 97
3.3.2.5 Tela de “Consulta de Quantidades e Valores já Utilizados (NFEs)” ............................ 98
3.3.2.6 Tela de “Consulta de Saldos Disponíveis para Compras” ............................................ 99
3.3.2.7 Tela de “Consulta de Desempenho com Relação às Vendas” .................................... 102
3.3.2.8 Relatório “Planejamento de Compras - Resumido” ................................................... 105
3.3.2.9 Relatório “Planejamento de Compras - Detalhado” ................................................... 106
3.4 RESULTADOS E DISCUSSÃO .................................................................................... 107
4 CONCLUSÕES ................................................................................................................ 109
4.1 EXTENSÕES .................................................................................................................. 110
REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................... 111
APÊNDICE A – Definições das tabelas e campos envolvidos no desenvolvimento do
módulo de planejamento de compras ................................................................................. 115
APÊNDICE B – Métodos de maior relevância de algumas das classes utilizadas no
desenvolvimento do módulo de planejamento de compras ............................................... 119
17
1 INTRODUÇÃO
Segundo Parente (2000), as atividades de planejamento são essenciais à sobrevivência
de qualquer empresa onde servem, principalmente, para antecipar e organizar as atividades a
fim de alcançar um objetivo. O planejamento estratégico é de extrema importância, visto que
o mesmo é responsável por envolver a determinação de intenções e objetivos de longo prazo,
além do planejamento tático, que envolve as atividades de marketing de curto prazo.
Para atingir os objetivos de lucro e crescimento das empresas, existem várias etapas e
processos que devem ser seguidos a fim de obter resultados positivos. Neste contexto, um dos
processos, talvez o mais importante, é o planejamento de compras, pois, segundo Grazziotin
(2003, p. 23), comprar bem já é a metade da venda, ou seja, no ato da compra já se inicia a
venda. Para o autor, quando se assina um pedido já se define a metade do lucro, portanto, o
lucro está na compra e a venda é uma decorrência de uma boa compra.
No Brasil, assim como em grandes empresas internacionais, também existem
problemas com relação à área de compras onde, de acordo com Dias e Costa (2006, p. 29),
muitos profissionais da área acabam sendo forçados a atuar na fase de execução dos trabalhos,
deixando em segundo plano ou, pior, ignorando a importante fase de planejamento.
Segundo as definições de missão e objetivos da área de compras especificadas por
Coronado (2001), Costa (2002) e Dias e Costa (2006), pode-se definir que esta área tem como
principais objetivos: comprar a quantidade de material e mercadoria correta, bem como
também adquirir serviços, no momento certo, da fonte certa, com a qualidade desejada, e ao
menor custo possível.
Diante do exposto, neste trabalho desenvolveu-se um módulo de planejamento de
compras na área comercial de uma empresa, através do Sistema de Gestão Empresarial
(Enterprise Resource Planning - ERP)1 Sapiens da empresa Senior Sistemas Corporativos
Ltda. O trabalho aplica o conceito de Open to Buy (OTB), ou seja, o tratamento dos saldos de
recursos financeiros disponíveis para compras no ERP Sapiens, pois, para Parente (2000, p.
224), uma vez estabelecido o planejamento de compras, o Open to Buy precisa ser
desenvolvido para que haja a monitoração do cumprimento das previsões de compra.
1 ERP são sistemas que permitem que as decisões e as bases de dados de todas as partes de uma organização sejam integradas de forma que as consequências das decisões de uma parte da organização sejam refletidas nos sistemas de planejamento e controle do resto da organização (SLACK; CHAMBERS; JOHNSTON; BETTS, 2007, p. 338).
18
1.1 OBJETIVOS DO TRABALHO
O objetivo deste trabalho foi o desenvolvimento de um módulo de planejamento de
compras para a área comercial de empresas varejistas aplicando o conceito de Open to Buy,
atribuído ao ERP Sapiens da empresa Senior Sistemas Corporativos.
Os objetivos específicos do trabalho foram:
a) desenvolver um módulo que automatiza os processos de planejamento de
compras no ERP Sapiens;
b) possibilitar que o sistema gerencie o andamento das compras conforme definido
no planejamento;
c) disponibilizar, através do planejamento de compras, informações sobre o
controle de gastos inerentes a esta área, bem como o saldo disponível para
compras.
1.2 ESTRUTURA DO TRABALHO
O presente trabalho está estruturado em quatro capítulos.
No primeiro capítulo apresenta-se a introdução, o objetivo geral, bem como os
objetivos específicos e a estrutura do trabalho, disponibilizando uma visão geral do mesmo e
o contexto em que está inserido.
O segundo capítulo apresenta a fundamentação teórica necessária para o
desenvolvimento do trabalho onde são apresentados os principais conceitos de Administração
de Materiais, Compras no contexto empresarial, Planejamento de Compras e Open to Buy. O
capítulo também mostra características do ERP Sapiens e de alguns trabalhos correlatos.
No terceiro capítulo é apresentado o desenvolvimento do módulo de planejamento de
compras no ERP Sapiens, mostrando a apresentação dos requisitos, diagramas e ferramentas
utilizadas no desenvolvimento, bem como é feita também uma demonstração do
funcionamento do módulo.
O quarto capítulo apresenta as conclusões finais e sugestões para trabalhos futuros.
19
2 FUNDAMENTAÇÃO TEÓRICA
Neste capítulo são apresentados os aspectos teóricos relacionados aos conceitos
envolvidos na Administração de Materiais e Compras, os quais devem ser compreendidos
para um melhor entendimento dos conceitos de Planejamento de Compras e Open to Buy. Os
conceitos de Administração de Materiais também contribuirão para uma melhor compreensão
do conteúdo exposto sobre o ERP Sapiens e os trabalhos correlatos que também são
apresentados ao final do capítulo.
2.1 ADMINISTRAÇÃO DE MATERIAIS
A Administração de Materiais é uma das atividades de gestão mais importantes para as
empresas. A manutenção da competitividade está ligada diretamente à forma com que os
materiais são administrados, os quais devem possuir níveis compatíveis com suas demandas,
como também as compras necessitam ser cada vez mais ágeis para poder atender às
necessidades de aumento da velocidade da renovação dos estoques. Reduzir os níveis de
armazenamento sem causar desabastecimento é o grande desafio para a gestão de materiais,
visto que a manutenção da lucratividade da empresa é altamente dependente deste processo
(COSTA, 2002, p. 17).
Outra definição a respeito da Administração de Materiais é apresentada por Severo
Filho (2006, p. 15):
Administração de Recursos Materiais é utilizar os princípios básicos da
Administração, com um padrão de qualidade sistemática, com a finalidade de bem
aplicar os recursos financeiros e materiais, destinados às atividades operacionais de
uma organização, seja de natureza industrial, comercial ou de serviços.
Segundo Francischini e Gurgel (2002, p. 4), a evolução da Administração de Materiais
processou-se em várias fases:
a) atividade exercida diretamente pelo proprietário da empresa, pois comprar era a
essência do negócio;
20
b) atividades de compras como apoio às atividades produtivas e, portanto, integradas
à área de produção;
c) condenação dos serviços envolvendo materiais, começando com o planejamento
das matérias-primas e a entrega de produtos acabados, em uma organização
independente da área produtiva;
d) agregação à área logística das atividades de suporte à área de marketing;
e) modelo atual da área de logística da qual faz parte a Administração de Materiais.
Os pontos anteriormente mencionados podem ser resumidos conforme mostrado no
Quadro 1.
Percepção Empresarial
Situação Inicial
Processo de Evolução
Estágio Avançado
Situação Atual
O administrador de materiais
Pessoa de recados
Funcionário a serviço da produção
Executivo conhecedor do mercado de abastecimento
Executivo que administra 60% dos custos e das despesas
Perfil do profissional
Pessoa bem considerada
Burocrata eficiente
Conhecedor de administração comercial e de mercados
Executivo com preparo técnico, econômico e legal
Progresso do profissional
Sem possibilidades
Comprador Planejamento do negócio
Diretor Executivo
Atividades da Administração de Materiais
Faz despesas Evita faltas e desmobiliza estoques excedentes
Planejamento estratégico
Concentração em uma visão de melhoria dos resultados
Fonte: Francischini e Gurgel (2002, p. 4). Quadro 1 – Evolução da Administração de Materiais
2.2 COMPRAS NO CONTEXTO EMPRESARIAL
Nos últimos anos, em todo o mundo, a área de compras vem passando por grandes
transformações e o grande motivo está no fato de que passou a ter importância equivalente à
finanças, marketing ou produção, e hoje integra as decisões estratégicas das empresas, sendo
que nenhuma organização financeiramente bem sucedida pode abstrair-se da contribuição de
compras/suprimentos em seu planejamento estratégico (DIAS; COSTA, 2006, p. 11).
No Quadro 2 é apresentado um comparativo entre as principais atividades da área de
compras no passado e no presente.
21
NO PASSADO NO PRESENTE • era um mal necessário • é vantagem competitiva • função isolada, normalmente vinculada à produção
• função integrada, normalmente vinculada à alta direção
• objetiva redução de custos • objetiva otimização de custos
• gerenciava crises • antevê problemas e busca soluções
• operava manualmente ou usava o computador precariamente
• opera com sistemas integrados de gestão, muitos deles ligados aos fornecedores
• trabalhava com muitos fornecedores
• trabalha com poucos fornecedores
• utilizava inspeções de qualidade
• utiliza qualidade assegurada
• denominava o público interno de usúarios
• denomina o público interno de clientes internos
• pedidos de compras isolados • contratos de longo prazo • profissional: comprador • profissional: empreendedor • informações dispersas • gerenciamento das
informações Fonte: Dias e Costa (2006, p. 12).
Quadro 2 – Comparativo entre as atividades da área de compras no passado e no presente
Com esta comparação pode-se perceber que o profissional desta área atualmente possui
características típicas de um empreendedor, e não mais apenas de comprador, visto que
atualmente o mercado exige destes profissionais conhecimentos técnicos, comerciais e de
gerenciamento.
Costa (2002), afirma que a função de comprador é mais que uma atividade
administrativa, ela é de vital importância para o sucesso das atividades logísticas de uma
empresa. Ele ainda afirma que: “A Área de Compras é, por muitos, vista de forma equivocada
como uma área excessivamente burocrática e geradora de despesas, mas na realidade pode
trazer resultados bem diferentes, desde que suas funções sejam bem executadas”.
Constata-se facilmente que a questão da compra, de modo geral, não tem um
tratamento mais sério, mais profissional. Um teste simples comprova isso: basta
entrar numa livraria e verificar quantos títulos existem sobre vendas e quantos, sobre
compras. A venda é algo que dá mais tesão, é mais agradável, e achamos muito
importante vender – é o nosso negócio. Continuo, porém, acreditando que comprar é
mais importante. (GRAZZIOTIN, 2003, p. 24).
Sabe-se que no contexto empresarial a administração de compras já é reconhecida
como uma atividade estratégica crucial, e que no mundo acadêmico esta área também já
22
possui seu reconhecimento, com disciplinas acadêmicas e grande número de professores
universitários dedicados ao estudo desta área.
Com relação à grande importância da área de compras, Dias e Costa (2006), afirmam
que essa importância é relativa em vários fatores, tais como a natureza da organização ou o
seu grau de dependência de terceiros. Porém, independente de qualquer fator, está
comprovado que muito pode ser feito de positivo, em uma empresa, a partir do desempenho
de uma área de compras bem estruturada.
Como já mencionado, sabe-se que a área de compras tem como principais objetivos
comprar a quantidade de material e mercadoria correta, bem como também adquirir serviços,
no momento certo, da fonte certa, com a qualidade desejada, e ao menor custo possível. Baily
et al. (2000, p. 31), ainda propõe a seguinte definição ampla de objetivos da área de compras
no contexto empresarial:
a) suprir a organização com um fluxo seguro de materiais e serviços para atender a
suas necessidades;
b) assegurar continuidade de suprimento para manter relacionamentos efetivos com
fontes existentes, desenvolvendo outras fontes de suprimentos alternativas, ou para
atender a necessidades emergentes ou planejadas;
c) comprar eficiente e sabiamente, obtendo por meios éticos o melhor valor por
centavo gasto;
d) administrar estoques para proporcionar o melhor serviço possível aos usuários e ao
menor custo;
e) manter relacionamentos cooperativos sólidos com outros departamentos,
fornecendo informações e aconselhamentos necessários para assegurar a operação
eficaz de toda a organização;
f) desenvolver funcionários, políticas, procedimentos e organização para assegurar o
alcance dos objetivos previstos.
Além disso, Baily et al. (2000) ainda acrescenta alguns objetivos mais específicos
como:
a) selecionar os melhores fornecedores do mercado;
b) ajudar a gerar o desenvolvimento eficaz de novos produtos;
c) proteger a estrutura de custos da empresa;
d) manter o equilíbrio de qualidade/valor;
e) monitorar as tendências do mercado de suprimentos;
f) negociar eficazmente para trabalhar com fornecedores que buscarão benefício
23
mútuo por meio de desempenho economicamente superior.
Embora no contexto empresarial tem-se conhecimento que a maioria das operações de
aquisição envolve a parte financeira de uma organização, Severo Filho (2006, p. 23) propõe
uma justificativa do por que não tratar-se a função ‘aquisição’ como ‘compra’. Segundo ele, o
sentido da palavra ‘aquisição’ significa várias maneiras ou formas de adquirimos alguma
coisa. Pode-se adquirir através de compra, doação, leilão, empréstimo, leasing, ou até mesmo
utilizando meios ilegais, porém, todas estas formas seguem um processo, que utiliza-se de
meios e estratégias.
Severo Filho (2006), afirma que a função ‘Aquisição’ depende especificamente da
Gerência de Estoques, onde o comprador por meios de relatórios gerenciais possui
diariamente a posição dos estoques e, conseqüentemente, as quantidades a serem adquiridas,
bem como quando essas aquisições devem ser feitas. As informações destes relatórios
representam as necessidades de aquisição de determinado material, dando início ao ciclo de
aquisição.
2.2.1 Varejo: Compras no segmento comercial
Segundo Dias e Costa (2006, p. 531), embora os princípios fundamentais sejam
semelhantes, existem algumas diferenças conceituais nas aquisições para empresas comerciais
relativamente às industriais. Na indústria sabe-se que os materiais adquiridos serão
manufaturados e, durante este processo será agregado valor ao produto final, resultando em
um valor global muito superior ao somatório dos custos individuais dos componentes
empregados. O mesmo não acontece no varejo, pois a empresa que comercializa vende os
produtos exatamente como foram recebidos, ou seja, a função do varejo é realizar a
distribuição, colocando ao alcance do público as mercadorias desejadas.
Uma primeira dificuldade diz respeito ao problema da “marca”. No âmbito
industrial, o profissional de compras pode consultar vários fornecedores, detentores
de marcas diferentes. Basta que estas estejam aprovadas pelo controle de qualidade.
A compra, então, será decidida em função das melhores condições comerciais
oferecidas, independentemente da marca, pois todas são aceitáveis. No varejo, a
situação é diferente. Muitos consumidores têm preferência por marcas especificas.
Mesmo quando determinado fabricante pratica preço muito acima da concorrência,
24
seu produto deve ser adquirido para não desfalcar a “gôndola”. (DIAS; COSTA,
2006, p. 532).
Diante do exposto, Dias e Costa (2006, p. 532) elencam alguns aspectos relevantes
sobre a atuação do comprador varejista:
a) acompanhamento do giro do estoque: como o ressuprimento é atribuição do
analista de compras, conhecer o nível dos estoques dos itens, verificando quais
estão sendo mais comercializados, é imperativo para garantir a não ocorrência de
faltas e, também, que não existam mercadorias “encalhadas” nas prateleiras;
b) atrasos nos pedidos colocados: diferentemente do procedimento padrão para a
indústria e o serviço, no comércio a substituição de fornecedores é tarefa muito
difícil. Aqui existe o conceito da “marca”. O consumidor tem preferências, e essas
não podem ser ignoradas pelo comprador. A ocorrência de atrasos é dos maiores
problemas, pois, apesar do mau atendimento de alguns fornecedores, não podemos
simplesmente cancelar o pedido e substituir esses fornecedores. A receita é
justamente oposta a essa recomendação padrão. Ao invés de cancelar o pedido, o
procedimento mais usado é colocarmos outro, garantindo nosso lugar na fila de
atendimento e resguardando-nos de outros atrasos, mais para frente;
c) compras especulativas: no varejo, a perspectiva de aumento nos preços de uma
mercadoria pode desencadear uma aquisição especulativa. O comprador aumenta
os níveis de estoque para beneficiar-se dessa elevação potencial. Com essa
providência, poderá optar por acompanhar os preços dos concorrentes,
aumentando seus lucros, ou manter os preços e vender volume acima da média
normal;
d) desenvolvimento de marcas alternativas: como o parâmetro preço é um dos
determinantes na decisão de compra do consumidor, o comprador deve ficar atento
para novas marcas colocadas no mercado. Geralmente, essas são oferecidas em
condições especiais, com a finalidade de conquistar parcela do mercado. Sabendo
explorar essas oportunidades, é possível oferecer produtos mais baratos, atraindo
consumidores de baixa renda, ou realizar promoções para aumentar a venda de
outros produtos os quais poderão ser vendidos aos clientes que procurarem ofertas;
e) contatos com clientes nos PDVs2: uma atividade de suma importância no trabalho
2 PDV é uma sigla comumente utilizada para designar o estabelecimento comercial, cujo significado é Ponto de Venda (DIAS; COSTA, 2006, p.533).
25
do profissional do varejo é o permanente contato com os clientes nos PDVs.
Como, muitas vezes, a decisão sobre “o que” e “quanto” comprar é deles, torna-se
fundamental conhecer as preferências dos consumidores. Identificar modelos,
marcas, cores ou tamanhos mais procurados propiciará mais segurança à decisão
de compra, evitando os “encalhes” ou faltas dos itens mais vendidos;
f) terceirização com fornecedores: prática ainda pouco difundida no Brasil, a
transferência para alguns fornecedores da gestão do estoque do varejista, cuidando
para que a reposição aconteça na mesma velocidade das vendas ao consumidor
final, começa a ser exercida. Esse conceito sedimenta-se na premissa de que o
fornecedor, por conhecer profundamente o seu segmento de mercado, desfruta de
melhores condições de responder às flutuações da demanda, assim como, por ter a
responsabilidade pela reposição, tenderia a conceder mais prioridade aos clientes
que se enquadram nessa categoria. O comprador passa a administrar os contratos,
cuidando para que os estoques não sejam maiores do que o desejado, exercendo o
controle do processo, especialmente no que se refere aos preços praticados, e
assegurando seu sucesso;
g) utilização do regime de consignação: outra prática muito usual é a consignação de
mercadorias. O fornecedor remete determinado volume de produtos para
pagamento posterior, em conformidade com as vendas futuras, assumindo o
compromisso de receber de volta as unidades não vendidas. Essa sistemática
facilita demais a decisão de compra, pois risco de arcar com o estoque não vendido
passa a ser do fornecedor e não do varejista. Cuidado fundamental, contudo, é não
utilizar esse instrumento de modo indesejado. Apenas porque o risco é do
fornecedor, alguns compradores solicitam volumes excessivos de mercadorias.
Muitas vezes, ocorre a obsolescência ou as devoluções de grandes quantidades. É
fácil perceber que, caso essa conduta se estenda por muito tempo, o fornecedor
desiste do procedimento e passa a ter sérios problemas financeiros, porque o seu
estoque vai-se tornar excessivamente elevado, em função das devoluções;
h) trabalhar com margens negativas: muitos varejistas usam o rendimento financeiro
como substituto da margem operacional. O comprador, ao negociar com os
fornecedores, obtém prazos de pagamento elevados. Como muitas mercadorias são
vendidas à vista, o recurso financeiro pode ser mantido aplicado até o efetivo
pagamento. Assim, fazendo o cálculo tradicional de margem, partindo-se do valor
de aquisição versus o preço de venda, essa é muito pequena ou, até negativa, mas,
26
considerando o rendimento financeiro, o resultado final será satisfatório. Isso tudo,
porém, somente será possível se o comprador conseguir prazos de pagamento
realmente longos;
i) conhecimento dos principais impostos incidentes: com o elenco de impostos
existentes, o comprador do varejo deve estar permanentemente atento. Existem
tributos estaduais e, por essa razão, variáveis em função da localização geográfica
do fornecedor. Muitas vezes, uma condição de preço, aparentemente atrativa, é
inferior a outra, fato visível com uma simples avaliação tributária. Outra
preocupação com os impostos diz respeito à recuperação desses. Determinados
tributos podem ser compensados ou recuperados. Recomendamos ao comprador
varejista consultar o departamento fiscal da sua organização para obter a
orientação sobre como proceder em cada situação particular;
j) compras com bonificação: muitos fornecedores não podem conceder descontos
sobre os seus preços, por serem estes padronizados. Muitos, contudo, podem
oferecer bonificações, isto é, acrescentam determinado volume à quantidade
constante do pedido, pelo mesmo valor total original, o que, na prática, representa
concessão no preço unitário. Cabe ao profissional de compras, avaliar os
benefícios decorrentes desse incremento e implementar no âmbito da empresa
varejista.
Ainda neste contexto, é importante salientar três conceitos muito importantes para uma
melhor condução das tarefas do comprador varejista, principalmente no acompanhamento
rigoroso das mercadorias integrantes do estoque da empresa, que deve ser exercido pelo
comprador. Tais conceitos também são explicados por Dias e Costa (2006, p. 536) conforme
visto a seguir:
a) variedade: identifica o número de linhas de mercadorias componentes do estoque
da empresa colocado à disposição do público. Está relacionada ao conceito de
família, sugerindo afinidade entre elas;
b) sortimento: quantidade de produtos integrantes de cada linha. Pode-se dispor de
poucos produtos para cada linha, situação característica de reduzido sortimento, ou
gama muito variada de mercadorias, sugestiva de grande sortimento;
c) uniformidade: identifica o grau de inter-relação das diversas linhas entre si. Diz-se
que existe uniformidade quando a correlação entre linhas ou mercadorias é
elevada. Esta seria situação típica de loja de cama, mesa e banho, por exemplo, em
que todas as mercadorias estão associadas.
27
2.3 PLANEJAMENTO DE COMPRAS
De acordo com Parente (2000, p. 222), o processo de compras envolve, provavelmente,
a atividade mais crítica de uma empresa do ramo de varejo. À medida que as vendas são
realizadas, os estoque das lojas necessitam ser reabastecidos para que novas vendas possam
ocorrer. O ciclo de abastecimento consiste em uma função vital para a sobrevivência e
expansão de qualquer empresa varejista. Com base na importância da área de compras perante
os outros setores da empresa, percebe-se que os profissionais desta área precisam estar
preparados para que a organização como um todo consiga alcançar os objetivos financeiros
planejados pela alta administração, para tanto, a seguir serão abordados os principais aspectos
relacionados ao planejamento de compras.
2.3.1 Organização financeira de compras x Objetivos da alta administração
Segundo Levy e Weitz (2000), os planos financeiros começam no topo da organização
de varejo e são divididos em categorias, enquanto os compradores e planejadores de
mercadorias fazem os seus próprios planos e os negociam com os níveis mais altos da
organização. Os gerentes superiores precisam tomar decisões que irão definir a imagem
comercial da empresa, por outro lado, os compradores e planejadores de mercadorias estudam
o desempenho passado de suas categorias, verificam as tendências de mercado e tentam
efetuar uma projeção das necessidades de suas mercadorias para as vendas futuras.
De acordo com Parente (2000), diversas práticas são adotadas nos procedimentos de
planejamento e gestão de compras, estes procedimentos podem ser estruturados em torno de
três abordagens:
a) de cima para baixo: começa com a gerência determinando um montante em
unidade monetária a ser estabelecido para as compras, para toda a empresa. Os
gestores de compras, então, distribuem esse montante entre as várias categorias,
por loja;
b) de baixo para cima: começa com a estimativa no nível de produto, passando pelo
nível de categoria, departamento, e consolidados no nível da empresa;
c) interativa: linhas gerais de orçamentos financeiros de compras são estabelecidos
28
pela gerência. Os compradores, então, seguem a abordagem “de baixo para cima”
com revisões e modificações feitas pela gerência para assegurar que tanto as metas
financeiras como as estratégicas de marketing e de abastecimento do produto
sejam cumpridas. Essa abordagem pressupõe que a organização possua um bom
sistema de informações e de coordenação.
Para as empresas menores, o planejamento financeiro também é semelhante, embora
não existam tantos níveis de gerenciamento envolvidos.
2.3.2 Orçamento de compras
Segundo Parente (2000, p. 223), em qualquer ramo varejista, as compras constituem a
conta de despesa de maior importância no relatório de lucros e perdas da empresa.
Para Santos (2006, p. 19), o orçamento de compras de uma empresa varejista
determina o valor a ser comprado mensalmente pela empresa em função do volume de vendas
previsto, e define os objetivos de venda, margens e níveis de estoque desejados pela empresa.
Quando houver alterações nas previsões de venda, o orçamento de compras poderá ser
modificado, tem-se como exemplo, o caso em que as vendas superam o objetivo planejado,
neste caso, a área de compras deve ser ágil para acelerar as entregas dos fornecedores quando
identificado que irá ocorrer a falta dos produtos comercializados pela empresa.
Elaborar um bom orçamento de compras ainda é uma tarefa difícil para a maioria
das empresas varejistas, uma vez que as mudanças no cenário econômico, nos gostos
dos consumidores e na alteração do padrão de compra, podem afetar o volume de
vendas e conseqüentemente, exigir mudanças nas quantidades a serem compradas.
(SANTOS, 2006, p. 19).
Neste contexto, Parente (2000, p. 223) sugere que a Meta de Compras do mês seja
adquirida através da fórmula apresentada no Quadro 3.
29
Estoque planejado para o final do mês
- Estoque inicial do mês + Previsão de vendas do mês
+ Demarcações previstas __________________________
= Meta de Compras do mês
Fonte: Parente (2000, p. 223). Quadro 3 – Meta de Compras do mês
O Quadro 4 apresenta um exemplo simplificado da lógica do orçamento de compras.
Período 1 (R$ 1.000)
Período 2 (R$ 1.000)
Período 3 (R$ 1.000)
Estoque inicial do mês (preço de venda) 400 430 390 Estoque planejado final do mês (preço de venda) 400 400 400 Previsão de vendas do mês (preço de venda) 200 210 205 Meta de compras do mês (preço de venda) 200 180 215 Vendas do mês (preço de venda) 170 220 .......... Fonte: Parente (2000, p. 223).
Quadro 4 – Exemplo simplificado da lógica do orçamento de compras
Parente (2000, p. 223) explica que, conforme se pode observar no Quadro 4, no
primeiro período a empresa iniciou o mês com valor dos estoques iguais ao estoque planejado
para o final do mês (R$ 400 mil). A Meta de Compras é então equivalente à previsão das
vendas do mês (R$ 200 mil). Percebe-se que as vendas no primeiro período (RS 170 mil)
foram inferiores ao valor previsto, o que resultou em uma elevação no valor de estoque inicial
do segundo período.
No segundo período o valor do estoque do início do mês (R$ 430 mil) é maior do que
o valor do estoque planejado para o final do mês (R$ 400 mil), então, neste caso foi
estabelecida uma Meta de Compras (R$ 180 mil) menor que a previsão de vendas (R$ 210
mil), isto para que o volume dos estoques seja corrigido para atingir o objetivo inicial do
terceiro período.
No terceiro período a empresa encontra-se em situação oposta à do segundo período,
possuindo um valor de estoque baixo (R$ 390 mil), desta forma, a Meta de Compras (R$ 215
mil) deverá atender as necessidades das vendas (R$ 215 mil) e repor a defasagem do estoque
(R$ 10 mil).
Em muitas empresas, ocorre a prática das demarcações de preço, estas por sua vez,
assumem uma magnitude expressiva, sendo necessário ajustar a Meta de Compras do mês. As
demarcações devem incluir não somente as reduções de preços das mercadorias, mas também
as quebras, causadas por estragos ou roubos. Desta forma, as demarcações reduzem o valor
dos estoques e, portanto, as compras precisam repô-las.
Parente (2000), explica ainda que, se o volume de demarcações planejadas no segundo
30
período fosse de R$ 10 mil, a Meta de Compras para este período passaria a ser R$ 190 mil,
conforme o cálculo: Meta de Compras do Mês = (R$ 400.000 – R$ 430.000) + (R$210.000) +
(R$ 10.000) = R$ 190.000.
2.3.3 Open to Buy
Segundo Parente (2000, p. 224), uma vez estabelecido o planejamento de compras, é
necessário que os gestores de compras desenvolvam instrumentos de controle, denominados
Open to Buy (“saldo disponível para compras”), para que as compras de determinado período
não ultrapassem o que foi projetado. Este controle deve registrar não somente as compras já
entregues, mas também as compras efetuadas que ainda não foram recebidas.
Um bom controle de estoque é fundamental para assegurar um nível adequado de
estoque para as vendas que serão efetuadas. Estoque excessivo ou mercadorias erradas
estocadas durante determinados períodos podem atrapalhar o fluxo de caixa e acarretar uma
redução dos lucros com excessivas demarcações. Para resolver este problema, utiliza-se o
Open to Buy, onde o varejista pode ter a certeza de estar armazenando a quantidade certa de
suas mercadorias (WATERS, 2009, tradução nossa).
Tudo começa com o planejamento de compras, mas, à medida que o tempo passa, o
Open to Buy torna-se o método pelo qual o comprador acompanha o desempenho efetivo com
relação ao que foi planejado e se ajusta conforme as condições do mercado. O Open to Buy
nada mais é do que as mercadorias necessárias menos as mercadorias disponíveis, incluindo o
que já foi pedido (THEOBALD, 2000, p. 169, tradução nossa).
O Open to Buy está diretamente ligado às mercadorias do ramo de varejo. Ele está
estruturado especificamente para atender as necessidades dos varejistas. É uma ferramenta
desenhada para ajudar os varejistas a gerir e reabastecer os estoques (HURLBUT, 2006,
tradução nossa).
Open to Buy é um orçamento, começa com o processo de planejamento, orientando os
processos futuros, fornecendo informações sobre o quanto comprar, bem como pontos de
referência para avaliar os progressos e ajustar os planejamentos futuros (HURLBUT, 2006,
tradução nossa).
Embora possa ser utilizado, o Open to Buy não é adequado para todas as categorias de
mercadorias, para mercadorias com um ciclo de vida longo, as ferramentas de reposição
31
automática são mais sugeridas. O Open to Buy é muito adequado para o ramo de moda, onde
produtos específicos podem mudar constantemente, no entanto, as suas classificações e
subclassificações permanecem relativamente estáveis. É muito adequado também para as
mercadorias sazonais, que precisam estar no estoque logo no início da época de vendas e
precisam ser gerenciados com um nível pré-determinado, para que não sobrem mercadorias
no final da época de vendas (HURLBUT, 2006, tradução nossa).
Embora o Open to Buy possa ser aplicado para qualquer período, geralmente este
possui aplicação mensal, desta forma, segundo Westerman (2001, p. 261, tradução nossa), o
Open to Buy do mês corrente pode ser calculado através da fórmula apresentada no Quadro 5.
Estoque planejado para o próximo mês
+ Vendas planejadas para o mês corrente + Demarcações planejadas para o mês corrente + Retratibilidade planejada para o mês corrente
- Estoque atual do mês corrente ________________________________ = Open to Buy para o mês corrente
Fonte: Westerman (2001, p. 261, tradução nossa). Quadro 5 – Cálculo do Open to Buy para o mês corrente
Ainda segundo Westerman (2001, tradução nossa), o Open to Buy dos próximos meses
pode ser calculado através da fórmula apresentada no Quadro 6.
Compras planejadas para o mês - Pedidos de compras para o mês
________________________ = Open to Buy para o mês
Fonte: Westerman (2001, p. 261, tradução nossa). Quadro 6 – Cálculo do Open to Buy dos próximos meses
Conforme pode ser observado no Quadro 5, de certa forma, o cálculo do Open to Buy
apresentado por Westerman (2001) para o mês corrente, já inclui em sua fórmula a Meta de
Compras apresentada por Parente (2000), apenas incrementando a retratibilidade, que são os
furtos de mercadorias no estabelecimento e demais formas de perdas de produtos. No cálculo
do Open to Buy dos próximos meses apresentado no Quadro 6, as compras planejadas nada
mais são do que a Meta de Compras definida através do cálculo apresentado por Parente
(2000).
O Quadro 7 apresenta um exemplo de controle do Open to Buy.
32
Data Valores (R$ mil)
Saldo para compras (R$ mil)
Estoque planejado final 400 Estoque inicial 430 Previsão de vendas 210 Demarcações previstas 10
1/fev. Meta de compras – fevereiro 190 190 5/fev. Mercadorias recebidas em 5/fev. 30 160 20/fev. Mercadorias recebidas entre 6 e 20/fev. 120 40 21/fev. Pedido colocado em 21/fev. 25 15 21/fev. Saldo para compras – Open to Buy – 15
Fonte: Parente (2000, p. 224). Quadro 7 – Exemplo de controle do Open to Buy
Um aumento relativamente pequeno nas vendas, muitas vezes, conduz a compras
excessivas, e depois, quando as vendas desaceleram, várias demarcações são feitas para
eliminar o excesso de mercadorias, que por sua vez, conduz para um menor lucro bruto.
Deve-se aprender a utilizar o Open to Buy para comprar de forma mais eficaz, ele requer
algum trabalho e muita disciplina, mas vale à pena, pois, contribui para um melhor fluxo de
caixa e lucros mais elevados (MATYJEWICZ, 2001, tradução nossa).
O Open to Buy mostra quanto de estoque deve-se ter em mãos no início de qualquer
mês e como as mercadorias devem ser recebidas durante o mês. Desta forma, pode-se estimar
com antecedência o valor financeiro que será necessário para ser investido em estoques de
mês para mês, para a próxima época (MATYJEWICZ, 2001, tradução nossa).
Por fim, o Open to Buy também ajuda a assegurar o montante adequado de estoque que
será necessário para suportar as vendas planejadas, fornecendo o controle dos compromissos
para que não se receba as novas mercadorias antes do previsto (MATYJEWICZ, 2001,
tradução nossa).
2.3.4 Planejamento unitário das compras
Para Parente (2000), do ponto de vista da gestão financeira, do fluxo de caixa e da
avaliação de indicadores de desempenho, os valores relacionados às vendas, estoques e
compras, devem ser expressos em unidades monetárias.
Quando se trabalha com agrupamentos de produtos, como departamentos ou
categorias, adota-se a unidade monetária, por consistirem um denominador comum
33
de unidade de medida. Para produtos individuais, pode-se trabalhar tanto com
previsões em unidades monetárias como em unidades físicas (ex.: quilos, litros e
quantidades unitárias). (PARENTE, 2000, p. 224).
Desta forma, quando se está decidindo sobre o volume de compras de um item
específico, a estimativa para o planejamento de compras é desenvolvida com base em
unidades físicas. Tem-se ainda que, do ponto de vista da gestão das compras, os produtos
podem ser classificados em “contínuos” e “descontínuos”, dependendo do tipo de produto, o
comprador do varejo deve adotar métodos diferentes de planejamento de compras. Os
produtos contínuos são aqueles com um ciclo de vida longo e que tem uma demanda contínua
durante muito tempo, como exemplo, pode-se citar os alimentos, produtos de limpeza,
perfumaria, eletrodomésticos entre outros. Os produtos descontínuos são aqueles com um
ciclo de vida curto, que estão presentes na loja apenas durante certo período de tempo. Como
exemplo para estes produtos, pode-se citar os artigos de confecção, que apresentam
características de moda e estações do ano e também os produtos que são novidades no
mercado, que em muitos casos, atingem bons picos de venda, entretanto, possuem um ciclo de
vida muito curto.
2.3.5 Como comprar bem utilizando o planejamento de compras na visão do SEBRAE
O Serviço Brasileiro de Apoio às Micro e Pequenas Empresas (SEBRAE) sugere em
forma de um instrumento de apoio gerencial, uma séria de regras básicas para comprar bem.
Estas regras servem somente como sugestão, sendo que cada empresa pode adaptá-las
conforme suas características. Tais informações servem também para evitar os erros mais
comuns nas operações de compra, possibilitando desta forma, que a empresa execute o seu
planejamento de compras com sucesso. Sendo assim, segundo o SEBRAE (2005), ao se
aproximar da época prevista para as compras, as atividades devem seguir uma rotina que pode
ser dividida nas seguintes etapas:
a) preparar a previsão de vendas;
b) ajustar a previsão às possibilidades da empresa;
c) decidir o que vai comprar;
d) elaborar orçamento para as compras previstas durante um período;
34
e) elaborar orçamento de mercadorias por seção;
f) efetivar as compras;
g) acompanhar os pedidos.
A previsão de vendas, geralmente, é realizada para um determinado período, conforme
as necessidades de cada empresa. Em muitas empresas, a etapa da previsão está diretamente
ligada à área de compras, entretanto, esta não parece ser a melhor solução. Se a etapa da
previsão fica por conta do setor de compras, o setor de vendas, maior interessado, entra na
elaboração da previsão apenas como um simples informante, não assumindo a
responsabilidade por ela. Desta forma, o mais correto é fazer com que a previsão de vendas
seja um trabalho conjunto dos setores de compras e de vendas. É aconselhável que se faça
uma previsão para cada seção da empresa, estas devem ser consideradas individualmente e,
somente mais tarde, reunidas em uma só, para fins de planejamento. De posse da previsão de
vendas, a área de compras poderá então estabelecer a relação estoque/venda para atender às
vendas previstas.
Após preparadas as previsões de vendas, estas devem ser discutidas em reuniões, onde
além do empresário, devem participar os gestores dos setores de compras, vendas e financeiro
da empresa, sendo que a participação do gestor do departamento financeiro é de vital
importância, pois é ele que conhece a real situação financeira da empresa, suas limitações e
possibilidades. Mesmo o gestor de vendas apresentando bons argumentos para a compra de
uma grande quantidade de determinado produto, somente o gestor do setor financeiro é quem
poderá dizer se a empresa terá condições de assumir estes compromissos financeiros.
Baseado na previsão de vendas, a área de compras toma a decisão do que realmente irá
comprar, considerando o plano de desembolso mensal. A área financeira, por sua vez, irá
planejar os desembolsos mensais necessários para as compras, bem como, indicar como e
onde buscar se necessários, os recursos para complementar o capital de giro da empresa, este
processo deve levar em consideração a relação estoque/venda fornecida pelo setor de
compras. O controle financeiro determina um orçamento para a área de compras, para que
este possa colocar em prática as aquisições programadas para determinado período. Este
orçamento prevê o cronograma dos desembolsos, mês a mês. Após elaborado o orçamento
que atende às aquisições de mercadorias previstas para determinado período, é preciso
detalhar o orçamento para cada uma das seções da empresa.
O orçamento de mercadorias por seção somente poderá ser realizado quando a empresa
estiver de posse da previsão de vendas aprovada, do orçamento que vai dispor para o período
considerado, do conhecimento das mercadorias necessárias à complementação do estoque e
35
quando a mesma souber com precisão, o que será necessário adquirir no que se refere às
novidades no mercado. Com estes dados, o gestor da área de compras tem condições de
organizar um orçamento de mercadorias para cada uma das seções da empresa, estabelecendo
as cotas de compras mensais.
Se as etapas anteriores estiverem bem organizadas, a efetivação das compras torna-se
uma etapa fácil de ser cumprida, bastando apenas o setor de compras fazer seus pedidos de
forma a atender às limitações ditadas pelo cronograma de desembolso mensal. Conforme a
área de compras vai efetuando as aquisições, as áreas de vendas e financeiras devem ser
informadas sobre as mercadorias e as datas previstas para sua chegada. Além disso, a área
financeira deve ser constantemente informada sobre o recebimento e a aceitação das
mercadorias compradas e mercadorias que, por algum motivo, foram rejeitadas, bem como os
cancelamentos de pedidos que possam ocorrer. O acompanhamento dos pedidos é uma etapa
muito importante e é essencial que o gestor de compras acompanhe os pedidos que ainda não
foram entregues. O gestor de compras deve constantemente acompanhar os pedidos, a fim de
fazer com que não ocorram atrasos nas entregas, pois, caso isto venha a ocorrer o
planejamento ficará prejudicado, principalmente o planejamento dos produtos descontínuos
(SEBRAE, 2005).
2.4 SISTEMA SAPIENS
O Sistema Corporativo Sapiens é um sistema de gestão empresarial desenvolvido pela
empresa Senior Sistemas Corporativos, sediada na cidade de Blumenau, no estado de Santa
Catarina. A Senior Sistemas também desenvolve soluções para outros segmentos de mercado,
os quais se destacam o Vetorh, sistema voltado para o gerenciamento estratégico de recursos
humanos (RH) e o Ronda, sistema para controle de acesso e segurança. O ERP Sapiens atende
diversos segmentos de negócios nas áreas administrativa, financeira, comercial, industrial,
logística e recursos humanos, além de atender a vários outros segmentos específicos. A
integração e independência dos módulos do sistema distribuem as informações por toda a
estrutura organizacional, permitindo ainda, a integração total com outros sistemas
corporativos, como os direcionadores para a área de recursos humanos (SENIOR SISTEMAS,
2009a).
Com relação à tecnologia, a parte de aplicação do sistema é totalmente desenvolvida
36
para a plataforma Windows, com arquitetura cliente/servidor. Além da arquitetura
cliente/servidor, o Sistema Sapiens também pode ser executado em outras formas de
aplicação, como uma versão web (funcionalidade parcial do sistema), WindowsAccess
(execução em ambiente remoto para desktop Windows), e BrowserAccess (acesso completo
ao sistema 100% web) (SENIOR SISTEMAS, 2009b).
O Sapiens é composto por um conjunto de módulos integrados que incluem todos os
processos empresariais com versatilidade, envolvendo todas as etapas de decisões e
produtividade de uma empresa, conforme ilustrado na Figura 1.
Fonte: Senior Sistemas (2009c).
Figura 1 – Divisão dos módulos existentes no Sistema Sapiens
O Sistema Sapiens é uma ferramenta ERP moderna, eficiente e flexível, idealizada
dentro do conceito “toque único”, em que um só lançamento no sistema alimenta com
informações toda a empresa (SENIOR SISTEMAS, 2009d).
A Figura 2 apresenta o menu principal do Sistema Sapiens.
37
Figura 2 – Menu principal do Sistema Sapiens
Conforme pode ser visto na Figura 2, o sistema possui uma divisão de áreas nos menus
que podem ser definidos da seguinte forma:
a) núcleo de informações gerais: são itens apresentados nos menus Tabelas e
Cadastros. As informações cadastradas nestes menus são na maior parte
informações de uso comum entre todos os módulos, sendo que no menu Tabelas
existe uma divisão de concentração das informações separadas por módulos, e no
menu Cadastros todas as demais informações necessárias para o funcionamento
das rotinas executadas diariamente em uma empresa. Pode-se desta forma fazer
uma analogia, e dizer que estes menus formam o coração do sistema;
b) módulos do sistema: são os itens de menus que representam na sua concepção, as
grandes áreas de uma organização, são eles: Comercial, Financeiro, Contábil,
Produção, Custos, e Sistema de Gestão da Qualidade (SGQ). Estes módulos
concentram todas as informações inerentes a estas áreas em uma organização,
sendo que existe uma integração total entre as mesmas;
c) recursos do sistema: neste item de menu são concentradas uma série de recursos
disponibilizados no sistema que facilitam o dia a dia de uma organização. Alguns
exemplos destes recursos são: gerador de relatórios (cada empresa pode
desenvolver os seus próprios relatórios), gerador de cubos (trabalha com dados no
38
formato de matriz, permitindo análises multidimensionais das informações
pertinentes a empresa), gerador de telas (cada empresa pode criar seus próprios
formulários para cadastramento de informações), além de importação e exportação
de dados, regras definidas pelos próprios usuários que permitem que o sistema
fique ainda mais aderente aos processos de cada cliente, entre outros;
d) diversos: neste item de menu o sistema disponibiliza alguns facilitadores e
configurações diversas, tais como: personalização de menus, personalização de
barras, configurações de acesso, entre outros.
2.4.1 Módulo Comercial do Sistema Sapiens
O módulo Comercial é um dos principais módulos do sistema. Tem integração com
todos os outros módulos, fornecendo e recebendo informações destes. No que se refere ao
ramo varejista, segundo o Instituto para Desenvolvimento do Varejo (IDV), a importância
deste setor no cenário econômico brasileiro vem sendo cada vez mais reconhecida e
destacada. Além de gerador do maior número de empregos formais no país, o setor exibe,
especialmente nos últimos quatro anos, números expressivos de crescimento e consistentes
indicadores de modernização (IDV, 2009).
Na utilização do Sapiens no segmento varejista, a alimentação dos dados do PDV no
módulo Comercial é feita através de um sistema de automação comercial integrado com o
Sistema Sapiens, este sistema de PDV é desenvolvido pela empresa Megasul Informática,
também sediada em Blumenau, Santa Catarina. Esta integração tem o objetivo de atender a
área comercial do ramo varejista com o sistema da Megasul trabalhando em pontos de venda
utilizando o equipamento Emissor de Cupom Fiscal (ECF), deixando o Sapiens realizar todas
as suas atividades de gestão empresarial como um sistema de retaguarda. Desta forma, o
Sistema Sapiens é constantemente alimentado com as informações comerciais realizadas nos
pontos de venda, sendo assim, o mesmo, juntamente com o sistema da Megasul é
comercializado como solução para o ramo de varejo. O Sistema Sapiens como solução para o
varejo, traz funcionalidades que auxiliam no gerenciamento de todos os processos comerciais,
de crédito, contábeis, de estoque, entre outros. (SENIOR SISTEMAS CORPORATIVOS,
2009).
O Sapiens como solução para o varejo permite agilidade no atendimento ao cliente,
39
reduzindo filas, gerando segurança no processo de vendas, além de bloqueio de descontos e
limites, análise imediata de crédito, transações de Transferência Eletrônica de Fundos (TEF),
atendimento à Legislação Fiscal e Tributária e emissão de carnês automaticamente. (SENIOR
SISTEMAS CORPORATIVOS, 2009).
O módulo Comercial é dividido em três principais sub-módulos, sendo eles: Compras,
Vendas e Estoques. Como complemento para o módulo Comercial, este possui ainda os sub-
módulos de Distribuição e Transporte.
2.4.1.1 Compras
O sub-módulo de Compras está diretamente ligado ao módulo de Estoques no que se
refere às requisições de materiais e solicitações de compras, além de ser integrado, também,
com o módulo de Contas a Pagar. Este módulo contempla também as etapas de cotação com
fornecedores até a entrada da nota fiscal, passando pela atualização dos estoques que é
transparente dentro do processo de compras. A Figura 3 apresenta um fluxograma das
atividades envolvidas neste módulo. Conforme Senior Sistemas (2009e), as principais
funcionalidades deste módulo são:
a) administra solicitações de compras, com proposição automática dos preços dos
fornecedores nas cotações;
b) gera solicitações de compra automaticamente a partir da análise de estoques, via
requisição e necessidade de produção;
c) possibilita análise entre as condições das ordens de compra e respectivas notas
fiscais;
d) gera ordens de compra via cotações, automaticamente;
e) controla ordens de compra e compradores responsáveis;
f) considera opcionalmente as ordens de compra no fluxo de caixa;
g) permite envio de e-mail automático ao fornecedor com cópia da ordem de compra;
h) permite condições flexíveis de pagamento;
i) controla o cadastro de fornecedores, incluindo tabelas de preços;
j) controla contratos;
k) permite gerar cotações de compra via web;
l) possibilita controle orçamentário das compras por centro de custo;
m) aceita qualquer unidade de medida de produto no recebimento de mercadoria,
40
através de conversão automática;
n) sugere a melhor cotação, trazendo o valor presente;
o) permite a entrada de notas fiscais via códigos de barra;
p) controla o processo de entrada e saída de mercadorias através da interface com
balanças.
Fonte: Senior Sistemas Corporativos (2009).
Figura 3 – Fluxograma do sub-módulo compras do Sistema Sapiens
2.4.1.1.1 Ordem de Compra (OC)
Segundo Francischini e Gurgel (2002, p. 24), “a ordem de compra é, sem dúvida, um
importante documento que, por suas diversas vias, permitirá uma amarração geral dos
serviços de compra”. Para o Sapiens, a Ordem e Compra faz a oficialização junto ao
41
fornecedor, nela são calculados os valores totais e líquidos dos produtos/serviços, impostos,
frete e seguro. Desta forma, tem-se a visualização prévia dos dados da Nota Fiscal que
possivelmente será emitida pelo fornecedor. O Sapiens permite que no momento da
negociação com o fornecedor sejam definidos todos os detalhes da compra. Assim, na entrada
da Nota Fiscal de Compra, basta indicar as OCs a que a nota se refere e fazer uma conferência
com os dados já previamente calculados, desta forma, não é necessária a digitação da mesma,
adquirindo agilidade e segurança (SENIOR SISTEMAS, 2009i).
2.4.1.1.2 Nota Fiscal de Entrada (NFE)
A Nota Fiscal de Entrada é o documento que comprova a existência de um ato
comercial. O Sapiens permite efetuar a geração de uma Nota Fiscal manualmente ou via
confronto e confirmação com as Ordens de Compra previamente negociadas. Uma vez que os
dados necessários à composição da Nota Fiscal foram previamente calculados com base na
Ordem de Compra, o Sapiens organiza a Nota e as respectivas parcelas de pagamento. Após a
finalização da Nota Fiscal de Entrada, que se concretiza com o fechamento da mesma, são
atualizados os saldos e movimentação do estoque, títulos a pagar, saldos e dados históricos do
fornecedor, situação da própria Ordem de Compra, documentos de requisição, bem como o
rateio de valores por contas e centros de custos (SENIOR SISTEMAS, 2009j).
A Figura 4 apresenta um exemplo do processo de geração de Nota Fiscal de Entrada
via Ordem de Compra no Sistema Sapiens. Pode-se perceber através da figura que em uma
Nota Fiscal de Entrada podem estar vinculadas uma ou mais ordens de compra, e que a
quantidade do item de produto/serviço não necessariamente precisa ser a mesma da OC, ou
seja, pode ser total ou parcial.
42
Figura 4 – Exemplo de geração de Nota Fiscal de Entrada via Ordem de Compra no Sistema Sapiens
2.4.1.2 Vendas
O módulo de Vendas é responsável por administrar os pedidos de venda, bem como
efetuar a geração de notas fiscais de saída. Possibilita também faturamentos por pedido,
cálculo de comissões via faturamento, além de colocar à disposição dos usuários, informações
gerenciais baseadas em estatísticas de vendas. A Figura 5 apresenta um fluxograma das
atividades envolvidas neste módulo.
43
Fonte: Senior Sistemas Corporativos (2009).
Figura 5 – Fluxograma do sub-módulo vendas do Sistema Sapiens
Conforme Senior Sistemas (2009f), as principais funcionalidades deste módulo são:
a) permite entrada de pedidos com produtos configuráveis;
b) permite o agendamento de visitas a clientes;
c) efetua análise de embarque gerando preparação para faturamento e montando as
embalagens para expedição de forma automática;
d) possibilita faturamento por pedido, por lote e/ou especiais (produtos e serviços);
e) controla pedidos de vendas, orçamentos e previsões de produção;
f) considera opcionalmente os pedidos de venda no fluxo de caixa;
g) analisa disponibilidades de estoques para vendas;
h) reajusta, gera e emite tabelas de preços de venda;
i) emite notas fiscais com layout adaptável;
j) calcula comissões via faturamento;
k) controla crédito, cadastros e históricos de clientes;
l) controla representantes, cotas e comissões;
44
m) permite condições flexíveis de pagamento;
n) mantêm históricos de tabelas de preços de venda de produtos e de serviços;
o) rastreia pedidos na produção;
p) controla contratos;
q) permite entrada de pedidos via web;
r) coloca à disposição informações gerenciais baseadas em estatísticas de vendas por
região, por representantes e por clientes (SIG – Sistema de Informação Gerencial);
s) permite a entrada de pedidos e notas fiscais via códigos de barra;
t) controla o processo de entrada e saída de mercadorias através da interface com
balanças;
u) aceita qualquer unidade de medida para venda, por meio de conversão automática.
2.4.1.3 Estoques
O sub-módulo de Estoques é responsável por atender às requisições de materiais,
emitir solicitações de compra para materiais sem saldo em estoque, bem como emitir
solicitações de compra de materiais para a produção. Em resumo, seu objetivo é controlar os
estoques de uma empresa com toda a movimentação (entrada e saída) de mercadorias que
ocorre nos sub-módulos de compras e vendas. A Figura 6 apresenta um fluxograma das
atividades envolvidas neste módulo. Conforme Senior Sistemas (2009g), as principais
funcionalidades deste módulo são:
a) controla estoques de produtos multidepósitos, por lotes, por prazos de validade e
por séries;
b) possui rotinas de requisição de materiais/serviços, aprovação, atendimento e
solicitação de compras;
c) calcula preço médio, de custo, de reposição e última entrada;
d) possui rotina de inventário com recontagem e acertos automáticos, permitindo
também o inventário por lote/série;
e) operacionaliza estoques com códigos de barras;
f) controla consignações (clientes e fornecedores);
g) analisa reposições de estoques;
h) gerencia curva ABC;
i) gera acúmulos mensais de Consumos, Entradas e Devoluções;
45
j) possibilita a formação de embalagens de estocagem;
k) possibilita aprovações e requisições via web;
l) permite a geração e o controle de numeração de produtos (séries);
m) gera solicitações de compra automaticamente a partir da análise de estoques, via
requisição e necessidades de produção;
n) permite controle de aprovação multinível por valor e centros de custos para ordens
de compra e solicitações de compras;
o) permite controle de localização através da máscara do código de depósito.
Fonte: Senior Sistemas Corporativos (2009).
Figura 6 – Fluxograma do sub-módulo estoques do Sistema Sapiens
2.4.1.4 Distribuição
O sub-módulo de Distribuição tem como objetivos disponibilizar complementos de
46
funcionalidades de pedidos do módulo de vendas, bem como processos de carga, acertos e
faturamentos. Conforme Senior Sistemas (2009f), as principais funcionalidades deste módulo
são:
a) forma cargas obedecendo rotas de entrega;
b) efetua faturamento conforme cargas geradas;
c) permite o acerto de contas no retorno das cargas;
d) permite entrada de pedidos via telemarketing ativo ou passivo;
e) permite gerar e receber informações de venda via palmtop;
f) possibilita o fracionamento dos produtos em estoque;
g) efetua ordens de compra com programação de entrega;
h) permite inclusão de pendências financeiras na formação da carga.
2.4.1.5 Transporte
O sub-módulo de Transporte tem como objetivo atender as necessidades de empresas
de logística de transporte de mercadorias, realizando processos de coleta de mercadorias,
contratação de motoristas, geração de Conhecimento de Transporte Rodoviário de Cargas
(CTRC), Manifesto, entre outros. Conforme Senior Sistemas (2009f), as principais
funcionalidades deste módulo são:
a) controla o cadastro de veículos e motoristas;
b) possibilita o cadastramento de tabelas de preço de frete;
c) permite o cadastramento de solicitações para coletas de mercadorias, controlando
remetente, destinatário e consignatário;
d) efetua a cotação de preços para transporte das mercadorias, controlando a
disponibilidade do motorista e a rota de entrega que ele atende;
e) controla a contratação dos motoristas/veículos que farão o transporte;
f) gera o conhecimento de transporte através das coletas cadastradas;
g) permite a geração do Manifesto, gerando títulos no Contas a Pagar para o
motorista contratado.
47
2.5 TRABALHOS CORRELATOS
No que diz respeito ao planejamento de compras e aplicação do Open to Buy, existem
alguns sistemas de gestão no mercado que desempenham papel semelhante ao proposto por
este trabalho, no entanto, poucos trabalhos acadêmicos foram desenvolvidos acerca destes
conceitos.
A Solução SAP Retail Merchandise and Assortment Planning, mais conhecida como
SAP Retail MAP, é uma ferramenta voltada para o varejo, baseada no planejamento de
mercadorias e sortimentos. O software é produto da empresa alemã SAP, desenvolvedora de
soluções para gestão empresarial. Além das quatro áreas principais, planejamento estratégico,
de local, de produtos e de seleção de mercadorias, o SAP Retail MAP também faz interação
com o planejamento de redução de preços, otimização da exposição de produtos,
gerenciamento de estilo, compras e recursos de alocação, além de fazer integração, entre o
planejamento OTB e o sistema de compras. Conforme pode ser visto na Figura 7, o SAP
Retail MAP foi concebido para atender aos desafios do complexo setor de varejo, desta
forma, diminuindo a distância entre a análise, a simulação, o planejamento e a execução (SAP
AG, 2005).
Fonte: SAP AG (2005).
Figura 7 – Planejamento integrado de mercadorias e sortimento na solução SAP Retail MAP
48
A Millennium NetWork, empresa brasileira também desenvolvedora de softwares para
gestão empresarial, comercializa o Millennium Business Manager (Millennium BM), uma
ferramenta ERP voltada para o mercado de vestuário e decoração. O Millennium BM é um
sistema modular, flexível, integrável, e que cobre os processos produtivos, administrativos e
comerciais de empresas ligadas ao ramo da moda e vestuário (MILLENNIUM NETWORK,
2006a).
A metodologia do planejamento de compras da Millennium envolve, também, o
planejamento de abastecimento de lojas, diminuição das quebras de estoque e remarcação
contínua, incluindo também um modelo parametrizável de Open to Buy (MILLENNIUM
NETWORK, 2006b).
No meio acadêmico, Santos (2006) apresentou uma dissertação de Mestrado no
Programa de Pós-Graduação e Pesquisa em Administração e Economia da Faculdade de
Economia e Finanças IBMEC, cujo título é “Propostas para Aumento do Desempenho da
Área de Compras em Empresa Varejista”. Nesta dissertação, a autora realizou um estudo de
caso em uma empresa varejista de material de construção, onde foi necessário identificar as
principais mudanças ocorridas na área de compras da referida empresa após a entrada da
concorrência, em relação aos quatro tópicos estratégicos: planejamento de compras, estrutura
organizacional, relacionamento com fornecedores e sistemas de informação, bem como
diagnosticar o estágio de evolução da área de compras nesta empresa. No que se refere ao
planejamento de compras, a autora faz algumas propostas para aumento do desempenho da
área de compras da empresa analisada, fazendo um comparativo entre o planejamento
utilizado pela empresa e as propostas apresentadas, elencando os possíveis benefícios da
aplicação de suas propostas.
49
3 DESENVOLVIMENTO DO MÓDULO DE PLANEJAMENTO DE COMPRA S
Neste capítulo são demonstradas as etapas de desenvolvimento do módulo de forma
detalhada, tais como, elaboração dos requisitos funcionais e não funcionais, diagramas de
casos de uso, diagrama de atividades, diagrama de estados, diagramas de classes, diagrama
entidade relacionamento, ferramentas utilizadas, bem como a operacionalidade da
implementação e os resultados obtidos acerca do presente trabalho.
O módulo de planejamento de compras desenvolvido possui a tarefa de automatizar os
processos de planejamento do setor de compras das empresas varejistas, bem como
disponibilizar informações sobre o controle de gastos utilizados nos pedidos de compra
emitidos pelos compradores através dos saldos disponíveis para compras.
As compras podem ser planejadas de acordo com os dados históricos de compras e
vendas, permitindo aplicar percentuais de crescimento para geração dos dados do
planejamento. O comprador pode considerar em todas as etapas do gerenciamento do seu
planejamento, variáveis como: estoque inicial planejado, estoque final planejado, previsões de
venda e metas de compra. Com o cálculo do Open to Buy é possível fazer estimativas de
compras com grande antecedência e conseqüentemente saber o valor financeiro necessário
para ser investido em determinado período. Quando o planejamento elaborado entrar em
vigência, o valor das compras será abatido do saldo disponível a cada fechamento de ordem
de compra registrada no sistema.
Neste contexto, a utilização deste módulo possibilita aos compradores uma melhor
utilização do desenvolvimento de estratégias que permitam facilitar a gestão da função
compras, evidenciando uma grande melhoria neste processo, permitindo ao gerente de
compras cadastrar planejamentos de acordo com a realidade orçamentária da empresa.
Durante toda a etapa de vigência do planejamento, é possível acompanhar o andamento do
mesmo, visualizando as quantidades já compradas e o saldo disponível para compras. Com a
utilização do planejamento de compras no Sistema Sapiens, os compradores podem
desenvolver suas funções de forma programada e profissional, visto que outros processos são
altamente dependentes desta função em uma empresa.
Como instrumento de modelagem do sistema para descrever o módulo, optou-se por
trabalhar com a Unified Modeling Language (UML), que segundo Booch, Rumbaugh e
Jacobson (2000), é uma linguagem-padrão para elaboração da estrutura de projetos de
software.
50
3.1 REQUISITOS
Os requisitos descrevem as funcionalidades e características que o sistema deve
apresentar. Para tanto, a seguir estão listados os requisitos do módulo desenvolvido, divididos
em requisitos funcionais (RF) e requisitos não funcionais (RNF).
3.1.1 Requisitos funcionais
O Quadro 8 apresenta os requisitos funcionais atendidos pelo módulo de planejamento
de compras e sua rastreabilidade, ou seja, vinculação com os casos de uso associados que são
posteriormente apresentados.
Requisitos Funcionais (RF) Caso de Uso
RF01: O sistema deverá permitir ao gerente de compras projetar o saldo
disponível para compras (OTB) para determinado período.
UC01
RF02: O sistema deverá permitir ao gerente de compras gerenciar o cadastro
de planejamentos de compras.
UC02
RF03: O sistema deverá permitir a geração dos planejamentos com base no
histórico de compras ou vendas.
UC03
RF04: O sistema deverá permitir ao comprador efetuar a atualização dos
saldos disponíveis para compras através do fechamento de ordens de compra
lançadas no sistema.
UC04
RF05: O sistema deverá permitir a visualização do andamento dos
planejamentos de compras.
UC05
RF06: O sistema deverá permitir ao comprador consultar as quantidades já
compradas.
UC06
RF07: O sistema deverá permitir ao comprador consultar os saldos disponíveis
para compras.
UC07
RF08: O sistema deverá permitir ao comprador a visualização do desempenho
do planejamento com relação às vendas.
UC08
RF09: O sistema deverá permitir ao comprador emitir relatório resumido dos UC09
51
planejamentos de compras.
RF10: O sistema deverá permitir ao comprador emitir relatório detalhado dos
planejamentos de compras.
UC10
Quadro 8 – Requisitos funcionais
3.1.2 Requisitos não funcionais
O Quadro 9 apresenta os requisitos não funcionais atendidos pelo sistema.
Requisitos Não Funcionais (RNF)
RNF01: O sistema deverá ser implementado utilizando o ambiente de desenvolvimento
Delphi e a Biblioteca de Componentes Visuais da Senior Sistemas.
RNF02: O sistema deverá utilizar um dos SGBDs homologados pela Senior Sistemas
Corporativos (Oracle, Sybase Server, Sybase SQL Anywhere, MS SQL Server ou DB2).
RNF03: O sistema deverá rodar em arquitetura cliente/servidor, ambiente remoto, e acesso
web, através das formas de acesso disponibilizadas pela Senior Sistemas.
Quadro 9 – Requisitos não funcionais
3.2 ESPECIFICAÇÃO
Neste item são apresentadas as especificações dos diagramas de casos de uso,
diagramas de classes, diagrama de estados e diagrama de atividades, bem como a
especificação do diagrama entidade relacionamento. Para a elaboração dos diagramas de
casos de uso, de classes, de estados e de atividades, utilizou-se a ferramenta Enterprise
Architect (EA), já para a elaboração do diagrama entidade relacionamento foi utilizada a
ferramenta MySql Workbench.
52
3.2.1 Diagramas de Casos de Uso
Os casos de uso têm como função representar as principais funcionalidades que se
pode observar em um sistema e dos elementos externos que interagem com o mesmo
(BEZERRA, 2002). A seguir são apresentados os diagramas de casos de uso modelados na
fase de especificação do módulo de planejamento de compras.
3.2.1.1 Diagrama de Casos de Uso do Gerente de Compras
O gerente de compras é a pessoa responsável pelo cadastramento dos planejamentos
que envolvem as projeções de saldo a serem utilizados, bem como a possibilidade de
utilização do histórico para geração destes planejamentos. Na Figura 8, é ilustrado o diagrama
de casos de uso do módulo desenvolvido no sistema disponível ao gerente de compras.
Figura 8 – Diagrama de casos de uso gerente de compras
A seguir é fornecida uma breve descrição para os casos de uso do gerente de compras:
a) projetar saldo disponível para compras para determinado período: permite que o
53
gerente de compras calcule o Open to Buy para o período de vigência de um
planejamento de compras;
b) cadastrar planejamento de compras: permite que o gerente de compras cadastre o
planejamento a ser utilizado em determinado período de vigência, informando os
dados gerais do planejamento, permitindo definir a maneira como o planejamento
irá se comportar durante o seu período de vigência, bem como informar os itens
que farão parte do planejamento;
c) efetuar planejamento com base no histórico de compras ou vendas: permite que o
gerente de compras utilize dados históricos de compras ou vendas para sugestão
automática de quebras de valores por período na geração do planejamento. Permite
que seja utilizado o histórico de ordens de compra, notas fiscais de entrada, notas
fiscais de saída e pedidos, bem como utilizar filtros para a busca dos dados
históricos.
3.2.1.2 Diagrama de Casos de Uso do Comprador
Os compradores são subordinados ao gerente de compras, eles são responsáveis por
efetuar as compras com os fornecedores, ficando limitados aos saldos disponíveis para
compras estipulados pelo gerente. Na Figura 9, é ilustrado o diagrama de casos de uso do
módulo desenvolvido no sistema disponível aos compradores.
54
Figura 9 – Diagrama de casos de uso comprador
Como se pode observar na Figura 9, além das permissões apresentadas no diagrama de
casos de uso gerente de compras, o gerente também podem realizar todas as atividades
comuns entre os compradores a ele subordinado. A seguir é fornecida uma breve descrição
para os casos de uso do comprador:
a) efetuar fechamento de ordens de compra: permite que o comprador efetive o
pedido de compra com o fornecedor através da ordem de compra, onde neste
momento serão atualizados os saldos disponíveis para compras;
b) visualizar andamento do planejamento de compras: permite que o comprador a
qualquer momento faça consultas para obter detalhes sobre o respectivo
planejamento. Permite que sejam visualizadas informações inerentes aos dados
gerais do planejamento, bem como informações dos itens que fazem parte do
planejamento;
c) consultar quantidades já compradas: permite ao comprador consultar as notas
fiscais já fechadas para saber quais compras já foram realmente efetivadas;
d) consultar saldos disponíveis para compras: permite ao comprador obter
informações detalhadas acerca dos saldos que ainda possui disponíveis para
55
comprar;
e) visualizar desempenho do planejamento com relação às vendas: permite que o
comprador visualize os dados do planejamento confrontando-os com os dados das
vendas efetuadas. Estes dados referem-se às quantidades e valores envolvidos no
planejamento, nas compras (notas fiscais) e nas vendas (notas fiscais) do item
planejado;
f) emitir relatório resumido do planejamento de compras: permite que o comprador
efetue a emissão de um relatório resumido dos planejamentos gravados no sistema,
a fim de obter apenas algumas das informações mais importantes dos mesmos,
como informações inerentes aos dados gerais e totalizadores de valores e saldos;
g) emitir relatório detalhado do planejamento de compras: permite que o comprador
efetue a emissão de um relatório detalhado dos planejamentos gravados no
sistema, a fim de obter todas as informações importantes dos mesmos, como
informações inerentes aos dados gerais, informações dos itens, bem como
totalizadores de valores e saldos.
3.2.2 Diagramas de Classes
Os diagramas de classes expressam a estrutura estática de um sistema e a possibilidade
de interações entre as classes (TONSIG, 2003). Segundo Guedes (2004), seu principal
enfoque é permitir a visualização das classes que irão compor o sistema com os respectivos
métodos e atributos. Cada classe do diagrama costuma possuir atributos, que guardam dados
dos objetos da classe e os métodos, que são funções que uma instância da classe pode
executar. Como são muitas as classes necessárias para o desenvolvimento do módulo de
planejamento de compras, elas estão reunidas, de acordo com as ligações lógicas entre si, em
pacotes, conforme apresentado na Figura 10.
56
Figura 10 – Pacotes do módulo de planejamento de compras
3.2.2.1 Pacote ObjetosPlanejamento
O primeiro pacote é denominado ObjetosPlanejamento e contém classes relativas à
implementação das regras de negócio e demais tratamentos envolvidos na criação de um
planejamento de compras. Conforme pode ser visto na Figura 11, fazem parte deste pacote as
seguintes classes:
a) TPlanejamento: classe que implementa todos os métodos e atributos necessários
para a criação e manipulação dos dados gerais do planejamento de compras, bem
como as regras de negócio a ele associadas;
b) TItemPlanejamento: classe que implementa todos os métodos e atributos
necessários para a criação de um item de planejamento de compras, bem como as
regras de negócio associadas ao mesmo.
Segundo Braude (2005, p. 88), mostrar mais detalhes do que o necessário pode tornar
um diagrama confuso e mais difícil de entender, neste contexto, o pacote
ObjetosPlanejamento apresenta apenas os atributos e métodos mais importantes de cada
classe, com o objetivo de não poluir o diagrama.
57
cd ObjetosPlanejamento
TPlanejamento
+ fCodEmp: int+ fCodFil: int+ fNumPla: long+ fCodUsu: long+ fDesPla: string+ fTipPrg: EnumTipPrg+ fBloCpr: char+ fTipPer: ENumTipPrd+ fBloCpg: EnumCriBlo+ fSitPla: ENumSitReg+ fIniVig: date+ fFimVig: date+ fDatCad: date+ fDatAlt: date+ fVlrBru: double+ fVlrLiq: double+ fQtdItp: double+ fVlrLit: long+ fTipCtl: char+ SldTot: double+ UtiTot: double+ OtbTot: double+ estado: TEstado+ gravado: boolean
+ Create()+ Destroy()- SetFCodEmp(int)- SetFCodFil(int)- SetFNumPla(long)- SetFCodUsu(long)- SetFDesPla(string)- SetFTipPrg(char)- SetFTipPer(char)- SetFBloCpr(char)- SetFBloCpg(char)- SetFSitPla(char)- SetFIniVig(date)- SetFFimVig(date)- SetFDatCad(date)- SetFDatAlt(date)- SetFTipCtl(char)+ Carrega() : boolean+ Init()+ IniciaLeituraItens()+ CriaItemPlanejamento(long) : long+ DestroiItemPlanejamento()+ RetornaPrimeiroItemPlanejamento() : TItemPlanejamento+ RetornaProximoItemPlanejamento() : TItemPlanejamento+ PosicionaItemPlanejamento(long)+ RetornaPonteiroItem() : Pointer+ CalculaValoresItemPlanejamento(TRecalc, DadosItemPlanej, boolean)+ AcumulaValores()+ Diminuivalores()+ Altera()+ Grava()+ AlteraItem()+ GravaItem()+ AlteraNumeroPlanejamentoItens()+ AtualizaLiquido()+ ExcluiPlanejamento(boolean)+ ExcluiItensPlanejamento()+ BuscaPlanejamentoAtivo() : long+ CalculaVlrLit() : double+ CalculaSldTot() : double+ CalculaUtiTot() : double+ CalculaOtbTot() : double
TItemPlanejamento
+ fCodEmp: int+ fCodFil: int+ fNumPla: long+ fSeqPla: long+ fCodOri: string+ fCodFam: string+ fCodPro: string+ fCodAgp: string+ fQtdPla: double+ fCodCpg: string+ fDatIni: date+ fDatFim: date+ fPerCre: double+ fVlrBru: double+ fVlrCre: double+ fVlrLiq: double+ fSldIte: double+ fOtbIte: double+ fVlrUti : double+ fQtdDpr: double+ fQtdUti: double+ fQtdDis: double+ estado: TEstado
+ Create(TObject, int, int, long, long)+ CreateCarrega(TObject, int, int, long, long)+ Destroy()+ Grava()+ Altera()+ CriaCustom()+ CalculaValores(boolean)+ CalculaItemPlanejamento(DadosItemPlanej)
1..*1
Figura 11 – Pacote ObjetosPlanejamento
58
3.2.2.2 Pacote InterfacesPlanejamento
O segundo pacote é denominado InterfacesPlanejamento e contém classes relativas
à implementação das interfaces disponibilizadas ao usuário para manipulação do
planejamento de compras e seus itens. Conforme pode ser visto na Figura 12, como recursos
relativos à implementação das interfaces do usuário, têm-se as seguintes classes:
a) Frm_CadastraPlanejamento: classe que implementa a tela de cadastro de
planejamento de compras. Ela permite a criação de uma instância de planejamento,
bem como instâncias de itens do planejamento, além de disponibilizar vários
outros métodos que auxiliam na manipulação do planejamento de compras;
b) Frm_CalculaOTB: classe que implementa a tela de cálculo do Open to Buy para
que o gerente de compras possa incluir os itens que irão compor o planejamento de
forma consciente, sabendo o valor disponibilizado através da fórmula existente no
conceito de Open to Buy;
c) Frm_BasePlanejamento: classe que implementa a tela de base para geração do
planejamento. Esta classe disponibiliza os métodos necessários para a manipulação
dos dados históricos de compras e vendas que poderão ser utilizados ou não pelo
gerente para geração do planejamento;
d) Frm_ConsultaPlanejamento: classe que implementa a tela de consulta de
planejamentos de compras;
e) Frm_ConsultaSaldosDisponiveis: classe que implementa a tela de consulta de
saldos disponíveis nos planejamentos de compras, onde é possível visualizar os
saldos dos itens de forma agrupada e detalhada;
f) Frm_ConsultaQtdsVlrsUtilizados: classe que implementa a tela de consulta de
quantidades e valores efetivamente já utilizados, através da consulta de notas
fiscais inerentes ao planejamento de compras;
g) Frm_ConsultaDesempRelacaoVendas: classe que implementa a tela de consulta
de desempenho com relação às vendas. Esta classe disponibiliza os métodos
necessários para que a interface possa dispor ao usuário os dados dos
planejamentos e das vendas efetuadas de forma agrupada e detalhada.
59
cd InterfacesPlanejamento
Frm_CadastraPlanejamento
+ planejamento: TPlanejamento+ itemPlanejamento: TItemPlanejamento+ regItem: TRegItem- codigoItemAnterior: string
- Create()- Destroy()- LimpaCampos()- DesabilitaCamposCabecalho()- PosicionaPrimeiroCampoGrid()- Processar()- Excluir()- Cancelar()- ConsisteCamposCabecalho()- ConsisteGeraisLinhaGrid()- SetaCorLabelSituacao()- Atual izaLBPlanejamentoAtivo()- Habil itaDesabili taBtAtivarPlanejamento()- Habil itaDesabili taBtInativarPlanejamento()- CalculaSaldoDisponivelCompras()- EscondeMostraCampos()- AplicaMascarasDatasVigencia()- EhDiaPrimeiroOuDia16(date) : boolean- EhDia15OuUltimoDiaDoMes(date) : boolean- DataMenorQueUltimoDiaDaQuinzena(date, date) : boolean- RetornaDataFinalQuinzena(date) : date- RetornaDataDecimoSextoDiaMes(date) : date- RetornaDataPrimeiroDiaMes(date) : date- RetornaDataUltimoDiaMes(date) : date- ExisteVinculoItemPlanejamentoComOrdensDeCompra(long, long) : boolean- BuscaValorJaUtil izadoParaCompras(int, int, long, long) : double- BuscaQuantidadeJaUtilizadaParaCompras(int, int, long, long) : double
Frm_BasePlanejamento
- regAgr: TRegAgr- regDet: TRegDet
- Create()- Destroy()- Marcar()- Desmarcar()- Cancelar()- Mostrar()- Processar()- LimpaCampos()- HabilitaDesabil itaCabecalho(boolean)- EscondeMostraCampos()- HabilitaDesabil itaClienteFornecedor()- HabilitaDesabil itaBotoesConsulta()- AplicaMascarasDatasVigencia()- RetornaProximoDomingoDaSemana(date) : date- RetornaProximoSabadoDaSemana(date) : date- DataEhSabado(date) : date- RetornaInicioProximaQuinzena(date) : date- RetornaFimProximaQuinzena(date) : date
Frm_ConsultaPlanejamento
- regPla: TRegPla- regIte: TRegIte
- Create()- Destroy()- Mostrar()- Cancelar()- LimpaCampos()- Habili taDesabi litaBotoesConsulta()- ConsultaOrigem()- ConsultaFamilia()- ConsultaProduto()- ConsultaAgrupamentoProduto()- ConsultaProdutoDerivacao()- EscondeMostraCampos()- ConsultaNFEsPlanejamento()
Frm_ConsultaQtdsVlrsUtilizados
- regNfc: TRegNfc- regIpc: TRegIpc
- Create()- Destroy()- Mostrar()- Cancelar()- LimpaCampos()- Habil itaBotoesConsulta()- MostrarTotais()- ConsultaOrdem()- ConsultaItensOC()- ConsultaInfFornecedor()
Frm_ConsultaSaldosDisponiv eis
- regAgr: TRegAgr- regDet: TRegDet
- Create()- Destroy()- Mostrar()- Cancelar()- LimpaCampos()- Habili taBotoesConsulta()- ConsultaOrigem()- ConsultaFamilia()- ConsultaProduto()- ConsultaProdutoDerivacao()- ConsultaAgrupamentoProduto()- MostrarTotais()
Frm_ConsultaDesempRelacaoVendas
- regAgr: TRegAgr- regDet: TRegDet
- Create()- Destroy()- Mostrar()- Cancelar()- LimpaCampos()- Habi litaBotoesConsulta()- ConsultaOrigem()- ConsultaFamil ia()- ConsultaProduto()- ConsultaProdutoDerivacao()- ConsultaAgrupamentoProduto()
Frm_CalculaOTB
- Create()- Calcular()- Cancelar()- LimpaCampos()- Habi litaDesabil itaCampos(char)
1
1
1
1
Figura 12 – Pacote InterfacesPlanejamento
60
3.2.2.3 Pacote AuxiliaresPlanejamento
O terceiro pacote é denominado AuxiliaresPlanejamento e contém classes já
existentes no sistema, que tiveram novos métodos implementados ou que sofreram alterações
em alguns métodos para contemplar as regras de negócio do planejamento de compras, bem
como contém também algumas enumerações utilizadas no planejamento. Conforme pode ser
visto na Figura 13, fazem parte deste pacote as seguintes classes e enumerações:
a) Frm_CadastraOrdemCompra: classe que implementa a tela de cadastro de ordens
de compra. Nesta classe foram adicionados novos métodos para tratamento do
vínculo de itens de planejamento de compras com itens de ordens de compra.
Foram implementados também métodos para atualização dos saldos disponíveis
para compras em diversas situações;
b) Frm_CadastraNFEntrada: classe que implementa a tela de cadastro de notas
fiscais de entrada. Esta classe sofreu alterações em alguns métodos para que seja
possível fazer o vínculo de um item de ordem de compra com um item de nota
fiscal de entrada, atribuindo a chave do planejamento à nota, para fins de
amarração entre todos os documentos envolvidos no processo de planejamento;
c) Frm_ConsultaOCGeracaoNFE: classe que implementa a tela de consulta de ordens
de compra a serem processadas para geração da nota fiscal de entrada. Esta classe
também sofreu alterações para contemplar o vínculo com o planejamento de
compras;
d) ENumSitReg: enumeração que define a situação do planejamento de compras,
possuindo os possíveis valores: ativo ou inativo;
e) ENumTipPrd: enumeração que define o tipo de período a ser considerado no
planejamento de compras, possuindo os possíveis valores: semanal, quinzenal ou
mensal;
f) ENumTipPrg: enumeração que define o tipo da programação de compras efetuada
no planejamento, possuindo os possíveis valores: programação por origem,
família, produto ou agrupamento de produtos;
g) ENumTipCtl: enumeração que define o tipo de controle de saldo do planejamento,
possuindo os possíveis valores: quantidade (controle físico), valor (controle
financeiro) ou ambos (controle físico e financeiro);
h) ENumCriBlo: enumeração que define qual o tipo de bloqueio de compras de
61
produtos não planejados e também o tipo de bloqueio de compras com condição de
pagamento não planejada no item de produto, possuindo os possíveis valores:
libera, avisa ou bloqueia.
cd AuxiliaresPlanejamento
Frm_CadastraOrdemCompra
- regRegOrdemCompra: TRegOrdemCompra- regItemProdutoOC: TRegItemProdutoOC
- TrataVinculoPlanejamentoComprasItemProduto()- ConsisteCondicaoPgtoPlanejamento(DadosItemPlanej)- BuscaOrigemProduto(int, string) : string- BuscaAgrupamentoComercialProduto(int, string) : string- BuscaDescricaoPlanejamentoCompras(int, int, long) : string- AtualizaOpenToBuyItemPlanejamento_FechamentoItem_AlteracaoValorItemJaFechado(DadosItemOC, DadosItemOCOLD, boolean)- AtualizaOpenToBuyItemPlanejamento_CancelamentoOC(ListaProdutos)- AtualizaOpenToBuyItemPlanejamento_CancelamentoItemJaFechado_Reabil itacaoOC(DadosItemOC)
Classe já existente no sistema, nesta são apresentados apenas os atributos mais importantes e os métodos que foram implementadosno desenvolvimento do planejamento de compras.
«enumeration»ENumSitReg
+ ativo: + inativo:
«enumeration»EnumTipPrg
+ produto: + familia: + origem: + agrupamentoProduto:
«enumeration»ENumTipPrd
+ semanal: + quinzenal: + mensal:
«enumeration»ENumTipCtl
+ quantidade: + valor: + ambos:
«enumeration»EnumCriBlo
+ avisa: + l ibera: + bloqueia:
Frm_CadastraNFEntrada
- RegNotaEntrada: TRegNotaEntrada- RegItemProdutoNFE: TRegItemProdutoNFE
- TrataSaidaSequenciaItemProdutoGrid()- ProcessaItens()- CarregaDadosProduto()
Frm_ConsultaOCGeracaoNFE
- RegOrdemCompra: TRegOrdemCompra- RegItemProdutoOC: TRegItemProdutoOC
- Mostrar()- Processar()
Classes já existentes no sistema, nestas são apresentados apenas os atributos mais importantes e os métodos que sofreram alterações para contemplar o planejamento de compras.
1
1
Figura 13 – Pacote AuxiliaresPlanejamento
62
3.2.3 Diagrama de Estados
Segundo Braude (2005, p. 100), “um diagrama de transição de estado mostra os
estados dos objetos de uma classe, os eventos aos quais os objetos são sensíveis e as
transições resultantes entre eles”. A Figura 14 apresenta o diagrama de estados da classe
TPlanejamento .
Figura 14 – Diagrama de estados da classe TPlanejamento
No diagrama apresentado na Figura 14, observa-se que o planejamento de compras
quando cadastrado, inicia seu estado como inativo, ficando a critério do gerente de compras
efetuar sua ativação quando achar necessário. Nota-se ainda, que a ativação do planejamento
não indica o uso do mesmo pelos compradores, a sua utilização como ferramenta para
controle de saldos somente é feita quando o estado muda para ativo em andamento, o que
indica que as datas que estão sendo efetuadas as ordens de compra estão dentro do período de
vigência estabelecido pelo gerente de compras.
63
3.2.4 Diagrama de Atividades
Um diagrama de atividade descreve o comportamento de um processo ou função
através da especificação da sequência de operações e decisões que permitem determinar
quando e como elas são realizadas. De maneira geral, consiste numa série de atividades
ligadas por transições (SILVA; VIDEIRA, 2005). A Figura 15 apresenta o diagrama de
atividades do módulo de planejamento de compras, onde é ilustrado o fluxo de trabalho deste
módulo.
Observa-se que o diagrama apresentado na Figura 15 faz a simulação de um
planejamento que possui a característica de bloquear compras de produtos sem saldo (físico
ou financeiro) disponível para tal finalidade, portanto, para poder efetuar o fechamento de
uma ordem de compra, ou seja, a concretização de um pedido com determinado fornecedor, é
necessário que o item de produto possua saldo disponível para compras.
No caso do item não possuir saldo, ou a quantidade ou valor financeiro do mesmo
ultrapassar o disponível no planejamento, o comprador deverá entrar em contato com o
gerente, a fim de conseguir um aumento do saldo disponibilizado inicialmente.
64
Figura 15 – Diagrama de atividades do planejamento de compras
65
3.2.5 Diagrama Entidade Relacionamento
Para Rezende (2005, p. 174), a notação fundamental para a modelagem de dados é o
diagrama entidade relacionamento. Segundo o autor, o principal propósito deste diagrama é
representar os objetos de dados e suas relações, sendo que cada entidade termina representada
por pelo menos uma tabela de dados. O diagrama entidade relacionamento do módulo
desenvolvido no presente trabalho é apresentado na Figura 16, o mesmo foi elaborado
utilizando-se a notação Crows Foot.
Um ponto a ser observado no diagrama entidade relacionamento da Figura 16, é que,
não foi preciso criar todas as tabelas apresentadas no diagrama. Foram criadas apenas as
tabelas PLANEJCOMPRAS (armazenamento dos dados gerais do planejamento de compras)
e ITENSPLANEJAMENTO (armazenamento dos itens do planejamento), isto porque o
planejamento de compras usufrui também de outras tabelas já existentes no Sistema Sapiens.
As tabelas ITENSPROOC (itens de produto de ordem de compra) e ITENSPRONFE
(itens de produto de nota fiscal de entrada) sofreram alterações para armazenar a chave do
item de planejamento que estará vinculado ao item de produto destas tabelas.
Outro ponto a ser observado é que um item de produto de ordem de compra pode ser
utilizado em mais de um item de nota fiscal de entrada, porém somente em notas fiscais
diferentes. Esta observação se faz necessária, pois, se fizéssemos um relacionamento um para
um nestas tabelas, entenderíamos que um item de ordem de compra só poderia estar presente
em um único item de nota fiscal de entrada, seja ela qual for, o que não é verdade.
No diagrama da Figura 16, foram apresentadas somente as tabelas que possuem algum
vínculo direto com o planejamento, a fim de não poluir o diagrama. O modelo de dados de
todo o sistema pode ser considerado de alta complexidade, isto se justifica pelo grande
volume de tabelas existentes, atualmente, são mais de 1200 tabelas. O grande número de
tabelas existentes ocorre devido à necessidade de o sistema precisar se adaptar a vários tipos
de mercado, bem como uma série de outros controles necessários para a realização de
diversos processos. No Apêndice A, encontram-se as definições das tabelas e campos
envolvidos no desenvolvimento do módulo de planejamento de compras.
66
Figura 16 – Diagrama entidade relacionamento
3.3 IMPLEMENTAÇÃO
Neste item referente à implementação são descritas as técnicas e ferramentas utilizadas
no desenvolvimento do módulo de planejamento de compras, bem como é apresentada
também a operacionalidade da implementação.
67
3.3.1 Técnicas e ferramentas utilizadas
Nesta seção são apresentadas as técnicas e ferramentas utilizadas para a
implementação do módulo desenvolvido no sistema, tais como: Borland Delphi, Sybase SQL
Anywhere (SGBD), Central de Banco de Dados Senior (CBDS) e Gerador de Relatórios
Sapiens.
O módulo de planejamento de compras foi implementado na linguagem Object Pascal,
utilizando o ambiente de desenvolvimento Delphi 5 e a Senior Visual Component Library
(SVCL), que é uma Biblioteca de Componentes Visuais desenvolvida por uma equipe de
tecnologia da Senior Sistemas utilizada no desenvolvimento de seus produtos. O Delphi 5 está
dividido em três versões, que foram projetadas de modo a se adaptar a uma série de diferentes
necessidades: Delphi 5 Standard, Delphi 5 Professional e Delphi 5 Enterprise. Cada uma
dessas versões é indicada para um tipo diferente de programador.
O Delphi 5 Enterprise foi a versão utilizada no desenvolvimento do módulo de
planejamento de compras, ela se destina a programadores que trabalham em ambiente
cliente/servidor de grandes corporações, incluindo tudo o que está disponível nas duas outras
edições do Delphi 5, além de uma série de outros recursos (TEIXEIRA; PACHECO, 2000, p.
4).
O Sybase SQL Anywhere é um pacote abrangente que fornece tecnologias de
gerenciamento e de troca de dados, que possibilitam rápido desenvolvimento e
implementação de aplicativos ativados por banco de dados. Este pacote oferece bancos de
dados de nível corporativo, que se adaptam tanto a servidores de 64 bits com milhares de
usuários quanto a pequenos dispositivos portáteis. As tecnologias de troca de dados do SQL
Anywhere estendem as informações dos aplicativos e sistemas corporativos a bancos de dados
executados em ambientes de linha de frente de missão crítica. As ferramentas de design e de
gerenciamento do SQL Anywhere permitem que os desenvolvedores implementem e usem
aplicativos de linha de frente e habilitem os administradores a gerenciar e oferecer suporte aos
desenvolvedores com grande facilidade (SYBASE, 2009).
Apesar de o Sistema Sapiens estar homologado para ser utilizado em diversos Sistemas
Gerenciadores de Banco de Dados (SGBDs), o Sybase SQL Anywhere na sua versão 9.0.1 foi
o SGBD utilizado durante todo o período de desenvolvimento do módulo de planejamento de
compras, sendo que ainda como etapa de validação final, o módulo foi testado em todos os
outros SGBDs já mencionados, homologados pela Senior Sistemas Corporativos.
68
3.3.1.1 Central de Banco de Dados Senior (CBDS)
Conforme Senior Sistemas (2009h), a Central de Banco de Dados Senior (CBDS) é
uma ferramenta desenvolvida pela Senior utilizada na linha de frente para a customização dos
sistemas no atendimento aos requisitos dos clientes. Entre os diversos recursos disponíveis
nesta ferramenta, destacam-se os seguintes itens:
a) manutenção e criação de novas tabelas, campos, índices, stored procedures e
usuários;
b) backup e restore de base de dados de diferentes SGBDs;
c) engenharia reversa;
d) configurações de armazenamento;
e) permissão e monitoramento de tabelas e campos;
f) editor de SQL;
g) consistência de bases de dados;
h) diversos relatórios referentes à base de dados;
A Figura 17 apresenta a interface do CBDS.
Figura 17 – Interface da ferramenta CBDS
69
3.3.1.2 Gerador de Relatórios Sapiens
O gerador de relatórios é uma ferramenta adicional dos sistemas da Senior que
possibilita a adaptação e criação de relatórios gráficos por parte dos usuários para atender as
suas necessidades (SENIOR SISTEMAS, 2004). Cada relatório criado no sistema é
denominado ‘modelo’, sendo que cada um destes modelos possuem uma categoria que indica
qual o módulo ou processo do sistema o mesmo está relacionado. Ao criar um modelo, é
gerado um arquivo criptografado que somente pode ser interpretado pelos sistemas da Senior.
A Figura 18 apresenta a interface do gerador de relatórios no Sistema Sapiens.
Figura 18 – Interface do gerador de relatórios do Sistema Sapiens
3.3.2 Operacionalidade da implementação
O módulo de Planejamento de Compras desenvolvido no ERP Sapiens tem por
70
objetivo automatizar e gerenciar todo o processo de programação de compras efetuadas pelo
gerente desta respectiva área, em um determinado período. Para tanto, o gerente poderá
cadastrar um planejamento informando suas características de funcionamento e quais
mercadorias irão fazer parte deste planejamento, bem como seus limites de compra, tanto
físico quanto financeiro.
Conforme pode ser visto na Figura 19, no módulo Comercial do sistema é
disponibilizado um menu contendo a tela de cadastro de planejamentos e as telas de consultas
inerentes aos mesmos. Para as consultas são apresentadas as seguintes telas: consulta de
planejamentos, consulta de quantidades e valores já utilizados para compras (notas fiscais de
entrada), consulta de saldos disponíveis para compras e consulta de desempenho do
planejamento com relação às vendas.
Figura 19 – Menu do módulo de planejamento de compras
Além da tela de cadastro e telas de consultas, são disponibilizados também através do
caminho “Comercial > Relatórios Gerais”, dois relatórios de planejamentos de compras,
sendo um relatório resumido e outro detalhado, conforme pode ser visto na Figura 20.
71
Figura 20 – Tela de seleção dos relatórios gerais do módulo Comercial
Antes de iniciar o processo de planejamento de compras, o administrador do sistema
deve informar às pessoas que terão acesso a tela de cadastro de planejamentos. Esta tela pode
ser considerada o coração do módulo de planejamento de compras, pois, é através dela que
são feitas as manutenções dos saldos de compras quando necessário, ou seja, o aumento do
saldo disponível quando este não for mais suficiente para que as compras possam ser
realizadas com os fornecedores. A permissão ou não permissão de acesso para determinada
tela do sistema é feita através de um recurso já existente no Sistema Sapiens, conforme pode
ser visto na Figura 21.
Figura 21 – Tela de permissões de acesso do Sistema Sapiens
72
Conforme apresentado na Figura 21, no caso do planejamento de compras, o único
usuário com acesso a tela de cadastro de planejamentos deve ser o gerente de compras, para
tanto, o administrador do sistema deve liberar acesso para o gerente de compras e negar
acesso para todos os demais usuários. Desta forma, a tela de cadastro somente ficará visível
no menu do sistema para o usuário com tal permissão de acesso, ou seja, o gerente de
compras. Este critério é adotado apenas para a tela de cadastro, sendo que não existe nenhuma
restrição para as telas de consulta, porém, este critério pode variar de empresa para empresa,
ou, de filial para filial.
Após a configuração de permissão de acesso, o sistema estará apto a trabalhar com
planejamentos de compras. A seguir, são apresentadas as telas implementadas no sistema com
o objetivo de ilustrar a operacionalidade do módulo desenvolvido, sendo que, no Apêndice B
encontram-se os métodos de maior relevância de algumas das classes implementadas no
desenvolvimento deste módulo.
3.3.2.1 Tela de “Cadastro de Planejamentos de Compras”
Através da tela de cadastros de planejamentos, o gerente de compras pode cadastrar os
mesmos, bem como efetuar manutenções quando for necessário. Através da mesma também é
possível fazer um acompanhamento, visualizando o andamento do planejamento durante todo
o seu período de vigência. A Figura 22 apresenta a tela de cadastro de planejamentos de
compras quando iniciada.
73
Figura 22 – Tela de cadastro de planejamentos de compras
O primeiro passo para a criação de um planejamento é definir a descrição do mesmo,
sendo que, para o número do planejamento o sistema atribui um número seqüencial. A
descrição do planejamento deve ser elaborada de forma que sua leitura seja de fácil
compreensão, pois ela aparecerá nas demais etapas do planejamento de compras.
O próximo campo a ser informado é o Tipo de Período a ser considerado para o
planejamento, além de servir como controle no momento da informação do período de
vigência, este campo é responsável também por definir as quebras de datas de previsão de
entregas das mercadorias quando utilizado a tela de base para geração do planejamento. Os
valores disponíveis para o campo Tipo de Período são: Semanal, Quinzenal e Mensal.
O planejamento inicia seu estado como inativo e após o efetivo cadastro através do
botão “Processar”, caso não exista nenhum planejamento ativo no momento, o sistema
questiona ao gerente se o mesmo deseja ativá-lo. Caso a decisão seja não ativar o
planejamento, o mesmo poderá ser ativado posteriormente quando for conveniente, ou quando
chegar ao período de vigência do planejamento. O sistema não permite trabalhar com mais de
um planejamento ativo ao mesmo tempo, então, para ativar um planejamento de compras, o
74
planejamento anterior, caso exista, deverá ser inativado.
O próximo campo a ser informado é o indicativo se o planejamento deve bloquear
compras de produtos não planejados. Os seguintes valores estão disponíveis para este campo:
a) libera: na geração de ordens de compra, quando o comprador informar um produto
que não consta no planejamento, o sistema não fará nenhuma consistência com
relação ao bloqueio da compra deste produto;
b) avisa: esta opção indica que na geração de ordens de compra, quando o comprador
informar um produto que não consta no planejamento, o sistema não bloqueará a
compra deste produto, porém, irá alertar o comprador de tal situação;
c) bloqueia: esta opção indica que na geração de ordens de compra, quando o
comprador informar um produto que não consta no planejamento, o sistema não
permitirá a sua utilização, informando que o item não está disponível para compras
no planejamento de compras.
Semelhante ao campo anteriormente mencionado, também está disponível no
planejamento o indicativo se o planejamento deve bloquear compras de produtos com
condição de pagamento não planejada. Este campo segue o mesmo critério do campo anterior,
porém a consistência na ordem de compra é feita com uma informação dos dados gerais da
ordem, e não dos itens, neste caso, a condição de pagamento. O período de vigência é uma das
informações mais importantes do planejamento, além de definir o período que o mesmo será
executado, ele define também as consistências dos períodos de previsão de entrega dos itens,
de forma que estas previsões somente possam ser planejadas dentro do período informado no
cabeçalho do planejamento.
O próximo campo a ser informado é o indicativo se o planejamento efetua o controle
de saldos de forma física ou financeira. Os seguintes valores estão disponíveis para este
campo:
a) quantidade (controle físico): indica que o sistema irá efetuar o abatimento apenas
nos saldos de quantidades dos itens planejados;
b) valor (controle financeiro): indica que o sistema irá efetuar o abatimento somente
nos saldos de valores dos itens planejados, ou seja, irá controlar o Open to Buy;
c) ambos (controle físico e financeiro): esta opção indica que o sistema efetuará tanto
o controle de saldo físico quanto financeiro.
Após informado o tipo de controle de saldo, deve-se informar o tipo de programação
de compras que será efetuado no planejamento. Estão disponíveis as opções: origem, família,
produto e agrupamento de produtos comerciais. Estas opções seguem a hierarquia do cadastro
75
de produtos existente no Sistema Sapiens, sendo que a única opção não disponível no
planejamento é a derivação de um produto. A derivação de um produto no Sistema Sapiens
não foi implementada no planejamento por ser uma categoria de um baixo nível muito
expressivo para o ramo de varejo, o que na maioria dos casos inviabiliza o planejamento das
compras, sendo que, o mais adequado seria trabalhar com a programação de produtos ao invés
de derivações. A Figura 23 ilustra um exemplo de hierarquia de produtos existente no Sistema
Sapiens.
Figura 23 – Exemplo de hierarquia de produtos existente no Sistema Sapiens
A Figura 24 ilustra um exemplo de hierarquia de produtos utilizando agrupamento de
produtos.
Figura 24 – Exemplo de hierarquia de produtos utilizando agrupamento de produtos
Além dos campos já mencionados, o planejamento de compras armazena também o
código do usuário responsável pelo cadastro, ou seja, o gerente de compras, bem como a data
de cadastro e a data de alteração, que será alimentada sempre que for efetuada alguma
manutenção no planejamento.
Um ponto a ser observado, é que, dependendo do tipo de período informado, o
planejamento se comporta de forma diferente com relação às datas do período de vigência,
como exemplo, têm-se a alteração das máscaras destes campos quando utilizado o tipo de
período mensal, para se trabalhar apenas com mês e ano nas datas de vigência. Diversas
76
consistências são feitas com relação às datas do período de vigência, como exemplo, pode-se
citar o período quinzenal. Entende-se que em um mês existem apenas duas quinzenas, e que
para o comércio, a primeira quinzena inicia no 1° dia do mês, indo até a metade do respectivo
mês, ou seja, o 15° dia. A segunda quinzena inicia-se logo após o término da primeira, ou
seja, no 16° dia, indo até o último dia do mês. Neste sentido, são necessárias algumas
consistências no planejamento. Um exemplo pode ser visto na mensagem emitida ao usuário
conforme demonstrado na Figura 25.
Figura 25 – Mensagem de aviso para escolha correta do início de uma quinzena
No exemplo da Figura 25, o gerente de compras está no mês de junho de 2009,
planejando as suas compras para os próximos três meses, ao informar uma data qualquer do
mês de julho que não seja dia 1° ou 16°, o sistema sugere as possíveis datas para o início do
período de vigência do planejamento. Ainda utilizando a quinzena como exemplo, caso o
gerente optar por fazer o planejamento para apenas uma quinzena, informando uma data final
para o período onde esta seja menor que o último dia da referida quinzena, o sistema
questiona ao usuário se o mesmo deseja aplicar a única data possível, conforme apresentado
na Figura 26.
Figura 26 – Mensagem de confirmação para aplicação correta da data final da quinzena
Outra consistência feita com relação às datas do período de vigência, é que, a data
inicial do período não pode ser menor que a data atual, ou seja, não fez sentido o gerente fazer
um planejamento para um período que já passou. Uma exceção ocorre no tipo de período
mensal, onde o gerente pode efetuar o planejamento do mês corrente mesmo que o mês já
tenha sido iniciado. Um exemplo de consistência para data de início de vigência informada
menor que a data atual é apresentada na Figura 27, onde o tipo de período a ser trabalhado é o
77
semanal.
Figura 27 – Mensagem de advertência para a não utilização de período passado
Outro ponto a ser observado, é que, embora o planejamento disponibilize os tipos de
períodos para se trabalhar, nada impede que o gerente efetue o seu planejamento para um
período maior que um mês, ou seja, o mesmo pode fazer programações de compra para
qualquer período. Por exemplo, o gerente pode trabalhar com programações de compras
semanais, quinzenais, mensais, trimestrais, ou até mesmo anuais, onde neste último caso,
estando em dezembro de 2009, o mesmo pode fazer as programações para todo o ano de
2010, ficando a sua escolha qual a melhor forma de se trabalhar com a vigência de um
planejamento. Conforme pode ser observado na Figura 22 demonstrada anteriormente, alguns
campos já iniciam com um valor padrão que é sugerido pelo sistema. Cada gerente de
compras precisa analisar qual a melhor forma de aplicação destas opções e quais os impactos
as mesmas terão no departamento de compras.
A Figura 28 ilustra um exemplo dos dados gerais informados no cabeçalho de um
planejamento de compras.
Figura 28 – Exemplo de dados do cabeçalho já informados em um planejamento
A próxima etapa é efetuar o cálculo do Open to Buy para o período de vigência do
planejamento, isto caso o mesmo utilize o controle financeiro, pois para planejamentos com
apenas controle físico dos produtos não existe necessidade de considerar o Open to Buy. Este
cálculo é feito pelo gerente de compras em uma tela desenvolvida especificamente para tal
funcionalidade. Esta tela é denominada “Cálculo do Open to Buy” e pode ser acessada através
do botão “Cálculo OTB $”, disponível no rodapé da tela de cadastro.
78
Embora os autores apliquem a fórmula para obter o Open to Buy do mês corrente ou
dos próximos meses, característica do mercado varejista, o módulo de planejamento de
compras desenvolvido no presente trabalho não se limita a trabalhar apenas com
planejamentos mensais, conforme mencionado anteriormente. Para tanto, os tipos de períodos
disponibilizados no cálculo do OTB foram denominados “período corrente” e “período
futuro”, ao invés de “mês corrente” e “mês futuro” (próximos meses). A Figura 29 apresenta a
tela de Cálculo do Open to Buy para o período corrente.
Figura 29 – Tela de cálculo do OTB para período corrente
No exemplo da Figura 29, pode-se observar que a fórmula para o cálculo do Open to
Buy para período o corrente é muito simples, porém, a sua simplicidade ajuda os compradores
a evitarem problemas futuros relacionados à área financeira da empresa. Após lançados os
valores no cálculo, descobre-se que o valor ideal para gastar com compras no período é de R$
183.500,00. Para o cálculo do Open to Buy de um período futuro, a fórmula também é muito
simples e semelhante ao cálculo do período corrente. As mudanças mais significativas para
esta fórmula com relação ao período corrente são:
a) deve ser considerado o estoque planejado para o final do período, ao invés do
estoque planejado para próximo período;
b) deve ser considerado o estoque planejado para o início do período, ao invés do
estoque atual do período corrente;
c) após calculado o valor das compras planejadas, deve ser considerado o valor total
79
de possíveis ordens de compra programadas com os fornecedores para o período.
A Figura 30 apresenta a tela de Cálculo do Open to Buy para um período futuro.
Figura 30 – Tela de cálculo do OTB para período futuro
No exemplo da Figura 30, pode-se observar que após lançados os valores no cálculo,
descobre-se que o valor ideal para gastar com compras no período, quando o mesmo chegar, é
de R$ 210.500,00. Com o Open to Buy calculado, a próxima etapa do cadastro é informar os
itens que farão parte do planejamento na grid denominada “Itens do Planejamento”. A
inserção de itens nesta grid pode ocorrer de duas formas: inserção manual, ou fazendo uso da
tela de “Base para Planejamento”. O Quadro 10 apresenta o significado de cada campo
utilizado na grid de “Itens do Planejamento”, bem como suas funcionalidades/características.
Seq. Sequência do Item: identifica a sequência do item do planejamento de
compras. Sua numeração é incrementada automaticamente pelo
sistema a cada novo item inserido na grid.
Origem Código da Origem de Produto: este campo fica visível na grid somente
quando o tipo de programação for Origem.
Família Código da família de produto: este campo fica visível na grid somente
quando o tipo de programação for Família.
Produto Código do produto: este campo fica visível na grid somente quando o
tipo de programação for Produto.
80
Agrupamento de Produtos Código do agrupamento de produtos: este campo fica visível na grid
somente quando o tipo de programação for Agrupamento Produto
Comercial.
Início Prev. Entrega Data inicial da previsão de entrega: indica o início do período
programado para a entrega do item. Este período será utilizado na
identificação do item de planejamento nas ordens de compra para
amarração entre os documentos e abatimentos de saldos. É permitido
informar apenas previsões de entrega que estejam dentro do período de
vigência do planejamento.
Fim Prev. Entrega Data final da previsão de entrega: semelhante ao campo Início Prev.
Entrega, porém, indica o fim do período programado para a entrega do
item.
Quantidade Quantidade planejada para compra: indica a quantidade prevista para o
item a ser adquirido pelos compradores.
Valor Item Valor do item do planejamento: indica o valor total previsto para o
item a ser adquirido pelos compradores.
Cond. Pgto. Código da condição de pagamento do item: indica qual é a condição de
pagamento prevista para as compras do item.
Desc. Cond. Pgto. Descrição da condição de pagamento.
% Crescimento Percentual de crescimento aplicado no item: este percentual é aplicado
sobre o valor disponível para compras no período, a fim de simular um
possível crescimento das vendas de determinando item e
conseqüentemente a necessidade de um aumento nas compras.
Vlr. Crescimento Valor de crescimento aplicado no item.
Valor Disponível p/ Compras
no Período
Valor disponível para compras no período de entrega previsto: este
campo recebe o valor do campo Valor Item e somente é alterado
quando informado um percentual de crescimento.
Valor Utilizado p/ Compras Valor já utilizado para compras: este campo indica o valor do item já
utilizado pelos compradores no fechamento de ordens de compra. Este
valor somente é atualizado caso o planejamento utilize o controle
financeiro para abatimento de saldos.
Saldo Disponível p/ Compras
(OTB)
Saldo disponível para compras do item do planejamento, ou Open to
Buy do item: este saldo também é atualizado no fechamento de ordens
de compra, da mesma forma que o valor utilizado para compras,
seguindo o mesmo critério de controle financeiro para abatimento de
saldos.
81
Qtd. Disponível p/ Compras
no Período
Quantidade disponível para compras no período de entrega previsto.
Qtd. Utilizada p/ Compras Quantidade já utilizada para compras: este campo indica a quantidade
do item já utilizada pelos compradores no fechamento de ordens de
compra. Esta quantidade somente é atualizada caso o planejamento
utilize o controle físico para abatimento de saldos.
Saldo de Qtd. Disponível p/
Compras
Saldo de quantidade disponível para compras do item do planejamento:
este saldo também é atualizado no fechamento de ordens de compra, da
mesma forma que a quantidade utilizada para compras, seguindo o
mesmo critério de controle físico para abatimento de saldos.
Quadro 10 – Campos da grid de “Itens do Planejamento”
Todos os campos editáveis anteriormente mencionados são informações obrigatórias,
com exceção do percentual de crescimento.
A tela de “Base para Planejamento” funciona como um grande facilitador para a
geração do planejamento. Através dela é possível fazer uma análise mais detalhada, onde o
gerente de compras pode definir quais itens e quantidades irão fazer parte do planejamento
baseando-se no histórico de compras ou vendas. Esta tela é acessada através do botão “Base
Planej.”, disponível no rodapé da tela de cadastro. A Figura 31 apresenta a tela de base para
planejamento de compras no momento de sua inicialização.
Figura 31 – Tela de base para geração do planejamento de compras
Conforme se pode observar na Figura 31, a tela de base para planejamento possui
82
várias opções de filtro disponíveis. Inicialmente, é preciso selecionar qual o histórico
(compras ou vendas) se deseja visualizar, são disponibilizadas as opções: Ordem Compra,
Notas Entrada, Pedidos e Notas Saída.
O período do histórico sugerido pelo sistema é sempre o mesmo período da vigência,
porém do ano anterior. Esta é apenas a sugestão do sistema, sendo que o gerente de compras
pode utilizar qualquer data para carregar o histórico. Como exemplo, pode-se querer utilizar o
histórico de notas fiscais de saída dos meses de junho e julho de 2008 para a geração do
planejamento de julho de 2009, pressupondo que às vendas aumentarão de tal forma, que
serão vendidas em apenas um mês, as mercadorias que foram vendidas em dois meses do ano
anterior. A Figura 32 demonstra um exemplo de histórico já carregado na tela de base para
planejamento.
Figura 32 – Exemplo de histórico de compras
Como pode ser visto na Figura 32, o exemplo demonstra a utilização de um histórico
de compras baseado nas ordens de compra efetivadas no mês de dezembro de 2008. A tela
apresenta duas grids, sendo uma para visualização dos dados de forma agrupada e outra para
visualização de forma detalhada. No exemplo, percebe-se que o tipo de período a ser
trabalhado é o semanal e o tipo de programação é por produtos.
83
O carregamento do histórico possui uma regra diferente para cada tipo de período, por
exemplo, para trabalhar com tipo de período semanal, entende-se que uma semana começa no
domingo e termina no sábado, então, no carregamento detalhado dos itens é feito uma quebra
para que seja obedecido tal critério. Percebe-se então, que, a primeira semana do mês de
dezembro de 2008 começa no primeiro dia do mês, independente se este é ou não domingo,
indo até o último dia da semana (06/12/2008). As semanas seguintes obedecem ao critério de
início e fim da semana, sendo que o último dia da última semana equivale ao último dia do
mês, ou seja, a última semana do mês de dezembro de 2008 equivale ao período de
28/12/2008 à 31/12/2008, porém, como se pode perceber na Figura 32, nesta semana não
houve compras para o produto utilizado no filtro da carga dos dados históricos.
Na Figura 32, percebe-se também que no mês de dezembro de 2008 foram compradas
814 unidades (pares) do produto TENISADIDAS, a um preço médio de R$ 99,04. Nota-se
que valor total aproximado desta compra foi de R$ 80.620,00, e que depois de informado o
valor de 10% de crescimento, o valor do saldo sugerido para ser utilizado no Open to Buy do
item, que inicialmente era o mesmo valor que o total da compra, passou a ser R$ 88.682,00. O
mesmo critério adotado na carga dos valores do histórico agrupado é utilizado para a carga do
histórico detalhado, segundo as regras de quebras semanais.
As quebras dos dados da grid de histórico detalhado nos tipos de período quinzenal e
mensal acontecem da mesma forma que o tipo de período semanal, porém, ao invés de as
quebras acontecerem por semana, no tipo de período quinzenal estas são feitas conforme as
duas quinzenas existentes no mês, já no tipo mensal, é feito a soma de todas as compras do
mês. A Figura 33 apresenta um exemplo de histórico de famílias de produto de notas fiscais
de entrada utilizando o tipo de período quinzenal.
84
Figura 33 – Exemplo de histórico utilizando tipo de período quinzenal
Na Figura 34 é apresentado um exemplo de histórico de agrupamento de produtos de
notas ficais de saída utilizando o tipo de período mensal.
Figura 34 – Exemplo de histórico utilizando tipo de período mensal
85
É necessário também, que antes do processamento, o gerente de compras informe uma
condição de pagamento a ser utilizada nos itens, sendo que caso seja necessário efetuar a
alteração de condição de pagamento de algum item, isto pode ser feito na tela de cadastro
após a geração dos itens através do botão “Processar” da tela de base para planejamento. Na
grid de histórico agrupado existe o campo “Sel.” o qual permite que sejam selecionados
apenas os itens que realmente se deseja incluir no planejamento de compras.
No rodapé da tela de base para planejamento existem botões de consulta, estas
consultas referem-se à visualização de todos os dados do item posicionado na grid de
histórico agrupado. O botão relacionado à consulta do item fica habilitado conforme o tipo de
programação escolhida, ou seja, ao se trabalhar com programação de agrupamentos de
produtos, somente o botão “Agrup. Prod.” ficará habilitado. Este mesmo critério também é
utilizado para os outros tipos de programação, sendo que para programação por produtos são
dois botões que ficam habilitados, um para consulta padrão via tela de pesquisa de registro
existente no Sistema Sapiens e outro para consulta detalhada do produto e suas derivações.
A Figura 35 apresenta um exemplo de consulta dos dados de um produto via tela de
pesquisa de registro do Sistema Sapiens.
Figura 35 – Consulta de produto base para planejamento via tela de pesquisa de registro
Após processado os itens selecionados na tela de base para planejamento, os mesmos
são incluídos automaticamente na grid de “Itens do Planejamento” da tela de cadastro, sendo
que esta inserção obedece algumas regras durante o processamento. Ao processar os itens na
tela de base para planejamento, o sistema efetua novamente as quebras de valores e também
dos períodos de previsão de entrega, para que estes se ajustem conforme o período de
vigência do planejamento, seguindo os mesmos critérios de quebras de períodos utilizados no
carregamento da base do planejamento. A Figura 36 apresenta um exemplo dos itens de
86
produto de um planejamento inseridos no cadastro após o processamento da base do
planejamento.
Figura 36 – Itens do planejamento após utilização da base para geração
A Figura 37 apresenta os demais campos da grid de “Itens do Planejamento” não
visualizados na Figura 36.
Figura 37 – Valores e saldos dos itens de planejamento
87
No exemplo apresentado nas Figuras 36 e 37, foi utilizado o mês de dezembro de 2008
para geração dos itens de planejamento do mês de julho de 2009. Com relação ao período de
previsão de entrega previsto para os itens, nota-se que foi utilizado o tipo de período semanal,
portanto, os períodos foram inseridos nos itens seguindo o conceito de início e fim das
semanas, conforme explicado anteriormente. Percebe-se também, que a distribuição dos
valores e quantidades da grid de “Itens do Planejamento” ocorreu de forma proporcional aos
valores e quantidades visualizados anteriormente na grid de “Histórico Agrupado” da tela de
base para planejamento.
A tela de cadastro apresenta ainda alguns totalizadores, dentre eles, destacam-se o
valor total utilizado para compras e o saldo total disponível para compras (OTB), pois, através
destes totalizadores o gerente de compras saberá de maneira geral como está o andamento de
suas compras planejadas. Através dos assuntos apresentados relacionados ao cadastro do
planejamento de compras, pode-se perceber a sua importância perante a utilização do mesmo
quando se inicia o período de vigência. Tal importância se justifica pelo fato de que é através
do cadastro que é definido o comportamento do sistema quando da ocorrência de uma
oficialização de compra junto a um fornecedor através de uma ordem de compra.
3.3.2.2 Processo de abatimento de saldos via tela de “Cadastro de Ordens de Compra”
Conforme já mencionado, a partir de uma ordem de compra é possível ter a
visualização prévia dos dados de uma nota fiscal de entrada. A partir de uma ordem de
compra são definidos todos os detalhes da compra com determinado fornecedor, a qual será
oficializada no momento da geração da nota fiscal.
O processo de abatimento dos saldos (físico ou financeiro) dos itens de um
planejamento acontece por intermédio do fechamento de uma ordem de compra. A tela de
cadastro de ordens de compra a ser utilizado é uma tela já existente no Sistema Sapiens, a
qual foi necessário implementar todos os tratamentos envolvidos no processo de abatimento
de saldos. A tela de cadastro de ordens de compra utilizada no planejamento é acessada
através do caminho “Comercial > Compras > Ordens Compra > Agrupada”. A Figura 38
apresenta a tela de cadastro de ordens de compra quando iniciada.
88
Figura 38 – Tela de cadastro de ordens de compra
A Figura 39 apresenta a aba de produtos de uma ordem de compra, onde são feitos os
vínculos de um item de planejamento com um item de ordem de compra.
Figura 39 – Aba de Produtos do cadastro de ordens de compra
Ao digitar um produto na ordem de compra, o sistema verifica se o produto, origem,
família ou agrupamento de produtos ao qual o mesmo está relacionado se encontra cadastrado
no planejamento ativo (conforme o tipo de programação). Caso o item não esteja cadastrado o
89
sistema se comporta conforme o que foi definido no indicativo do planejamento se o sistema
bloqueia compras de produtos não planejados. A Figura 40 apresenta um exemplo de
consistência de digitação de um produto não cadastrado onde o planejamento está configurado
para apenas avisar o usuário de tal situação.
Figura 40 – Exemplo de aviso de produto não planejado
Já a Figura 41 apresenta um exemplo onde o planejamento está configurado para
efetuar o bloqueio de produtos não planejados.
Figura 41 – Exemplo de bloqueio de compra de produto não planejado
Caso o planejamento esteja configurado para liberar compras de produtos não
planejados, ao digitar um produto qualquer que não esteja presente no planejamento, o
sistema não apresenta as mensagens de consistência, permitindo a compra deste produto. O
mesmo tratamento anteriormente mencionado é aplicado também para a condição de
pagamento da ordem de compra, conforme configurado no indicativo se o sistema bloqueia
compras de produtos com condição de pagamento não planejada. Um exemplo de aviso sobre
esta situação pode ser visto na Figura 42.
Figura 42 – Exemplo de aviso de produto com condição de pagamento não planejada
Outro exemplo de consistência da condição de pagamento pode ser visto na Figura 43.
90
Figura 43 – Exemplo de bloqueio de compra de produto com condição de pagamento não planejada
Conforme pode se visto na Figura 44, depois de digitado o item de produto e
constatado que o mesmo se encontra disponível no planejamento, através da identificação do
produto ou sua definição hierárquica e a previsão de entrega do mesmo, o sistema faz o
relacionamento do item de produto da ordem de compra com o item de planejamento, sendo
possível a visualização de alguns dados importantes do item do planejamento, conforme pode
ser visto nas Figuras 45 e 46.
Figura 44 – Item de produto digitado na ordem de compra
91
Figura 45 – Relacionamento de um item de planejamento com item de ordem de compra
Figura 46 – Demais informações disponibilizadas através do relacionamento
Ao efetuar o fechamento da ordem de compra (efetivação do pedido com o
fornecedor), caso o item de planejamento possua saldo disponível (conforme tipo de controle,
92
físico ou financeiro), o sistema realiza a atualização dos saldos e estas informações já podem
ser visualizadas pelo gerente de compras através da tela de cadastro, bem como por outros
compradores através das telas de consulta. A Figura 47 apresenta um exemplo de quantidades,
valores e saldos de um item de planejamento atualizados após o fechamento de uma ordem de
compra.
Figura 47 – Informações atualizadas no planejamento de compras
Se no momento do fechamento de uma ordem de compra, o item a ser utilizado não
possuir saldo disponível, o sistema bloqueia o fechamento desta ordem de compra. Desta
forma, o comprador deve solicitar ao gerente de compras um aumento do saldo disponível
(físico ou financeiro) e somente depois de concedido o aumento de saldo a ordem de compra
poderá ser fechada.
A Figura 48 apresenta um exemplo de bloqueio de fechamento de ordem de compra
quando ultrapassado o saldo financeiro de um produto planejado, ou seja, o Open to Buy do
item de planejamento.
93
Figura 48 – Exemplo de falta de saldo financeiro para o produto planejado
Na Figura 49, é apresentado um exemplo de bloqueio de fechamento de ordem de
compra quando ultrapassado o saldo físico de um produto planejado.
Figura 49 – Exemplo de falta de saldo físico para o produto planejado
Na Figura 50, é apresentado um exemplo de bloqueio de fechamento de ordem de
compra quando ultrapassado o saldo financeiro de uma origem de produto planejada.
Figura 50 – Exemplo de falta de saldo financeiro para a origem de produto planejada
94
Depois de fechada uma ordem de compra, a mesma ainda pode ser cancelada,
reabilitada (volta à situação inicial, ou seja, não fechada) ou até mesmo sofrer algumas
alterações que também influenciam diretamente nos saldos disponíveis. Para tanto, o sistema
efetua atualizações (estorno) de valores, quantidades e saldos nas seguintes situações:
a) cancelamento da ordem de compra;
b) reabilitação da ordem de compra;
c) cancelamento de um item de ordem de compra;
d) alteração de um item de ordem de compra.
Após o fechamento de uma ordem de compra, não é possível diminuir a quantidade e
valor disponível de um item de planejamento de determinado período para uma quantidade ou
valor menor que o já utilizado para compras. A quantidade e valor somente podem ser
alterados no cadastro do planejamento para uma quantidade ou valor maior que o atual, como
forma de aumento de saldo por parte do gerente de compras. As Figuras 51 e 52 exemplificam
tal situação.
Figura 51 – Consistência efetuada na alteração de quantidade de um item de planejamento já utilizado
Figura 52 – Consistência efetuada na alteração de valor de um item de planejamento já utilizado
Da mesma forma que a situação anterior, depois de fechada a ordem de compra, o
sistema não permite que o planejamento seja inativado antes do fim do seu período de
vigência, conforme pode ser observado no exemplo da Figura 53.
Figura 53 – Consistência efetuada na tentativa de inativação de um planejamento de compras já utilizado
95
O planejamento somente poderá ser excluído se ainda não tiverem sido geradas ordens
de compra, independente se as mesmas foram fechadas ou não, ou seja, havendo qualquer
ligação de item de planejamento com item de ordem de compra não será possível a exclusão
do planejamento. A Figura 54 ilustra a situação em que o planejamento já foi utilizado, não
permitindo sua exclusão.
Figura 54 – Consistência efetuada na tentativa de exclusão de um planejamento de compras já utilizado
Depois de utilizado para geração de ordens de compra, um item de planejamento
(origem, família, produto ou agrupamento de produtos) não pode ser alterado e nem excluído,
conforme demonstrado nas Figuras 55 e 56.
Figura 55 – Consistência efetuada na tentativa de alteração do código de origem de um item utilizado
Figura 56 – Consistência efetuada na tentativa de exclusão de um item já utilizado
Por fim, a Figura 57 demonstra a situação em que o planejamento de compras já foi
finalizado, através do fim do seu período de vigência e de sua inativação, onde o sistema não
permite que o mesmo seja ativado novamente.
Figura 57 – Consistência efetuada na tentativa de ativação de um planejamento de compras já finalizado
96
3.3.2.3 Processo de relacionamento Ordem de Compra – Nota Fiscal de Entrada
Para geração de uma nota fiscal de entrada relacionada a uma ordem de compra com
item de produto vinculado a um planejamento, é utilizada uma tela já existente no sistema. A
tela a ser utilizada é a tela de “Cadastro de Notas Fiscais de Entrada” que se encontra no
caminho “Comercial > Compras > Notas Fiscais de Entrada > Agrupada”.
Nesta tela foi necessário implementar os tratamentos para que exista a amarração do
planejamento de compras também na nota fiscal. Esta amarração entre os documentos pode
ser feitas de duas maneiras: informando manualmente o item da ordem de compra no item da
nota ou buscando estas informações através da tela de consulta de ordens de compra da nota
fiscal de entrada. É importante lembrar que na nota fiscal não existe abatimento de saldos,
sendo que este processo é feito exclusivamente no fechamento das ordens de compra. A
Figura 58 apresenta a tela de consulta de ordens de compra da nota fiscal de entrada, através
da qual é possível selecionar os itens de ordens de compra que irão gerar itens da nota fiscal.
Figura 58 – Tela de consulta de ordens de compra da nota fiscal de entrada
97
A Figura 59 apresenta a tela de cadastro de nota fiscal de entrada depois de
processados os itens de ordens de compra na tela de consulta de ordens de compra.
Figura 59 – Aba de Produtos do cadastro de notas fiscais de entrada
Depois de fechada a nota fiscal de entrada, existirá uma amarração completa entre os
documentos envolvidos no planejamento de compras.
3.3.2.4 Tela de “Consulta de Planejamentos de Compras”
A tela de “Consulta de Planejamentos de Compras” foi desenvolvida de modo que se
possam visualizar todos os dados dos planejamentos, tanto pelo gerente de compras, quanto
pelos compradores. A Figura 60 apresenta um exemplo de consulta de planejamentos de
compras.
98
Figura 60 – Tela de consulta de planejamentos de compras
Conforme se pode observar na Figura 60, esta tela possui alguns filtros no cabeçalho
para facilitar a busca de determinado planejamento, bem como uma opção para exibir
somente o planejamento ativo. Na grid de “Dados Gerais” são apresentados os dados
cadastrados no cabeçalho do planejamento, entre outros totalizadores, já na grid de “Itens”
são apresentados todos os dados dos itens de planejamento relacionados ao planejamento
posicionado na grid de “Dados Gerais”. Esta tela possui também no rodapé os botões de
consulta do item cadastrado no sistema, bem como um botão para acesso a tela de “Consulta
de Quantidades e Valores já Utilizados (NFEs)”.
3.3.2.5 Tela de “Consulta de Quantidades e Valores já Utilizados (NFEs)”
A tela de “Consulta de Quantidades e Valores já Utilizados (NFEs)” permite que sejam
consultadas todas as notas fiscais inerentes a um planejamento de compras. A Figura 61
apresenta um exemplo de consulta de notas fiscais de entrada do planejamento de compras.
99
Figura 61 – Tela de consulta de quantidades e valores já utilizados (NFEs)
Como pode ser visto na Figura 61, esta tela possui na grid de “Itens de Produto” a
informação da ordem de compra que originou o item de nota fiscal, bem como a informação
do item de planejamento que deu início ao processo vinculando-se ao item de ordem de
compra. Além dos filtros disponibilizados no cabeçalho da tela, a mesma possui também no
rodapé os botões de consulta do item cadastrado no sistema, um botão para acesso a uma tela
de consulta dos itens da ordem de compra e um botão para acesso a uma tela de consulta de
informações do fornecedor.
3.3.2.6 Tela de “Consulta de Saldos Disponíveis para Compras”
A tela de “Consulta de Saldos Disponíveis para Compras” é uma tela desenvolvida
especificamente para permitir consultas dos saldos físico e financeiro dos itens de
100
planejamento. A mesma serve principalmente como apoio aos compradores antes de inserir
um item na ordem de compra, fazendo com que os mesmos não tenham surpresas
desagradáveis ao tentar oficializar as ordens de compra com os fornecedores. As Figuras 62 e
63 ilustram uma consulta de saldos disponíveis para compras.
Figura 62 – Tela de consulta de saldos disponíveis para compras
101
Figura 63 – Demais informações da consulta de saldos disponíveis para compras
Conforme pode ser visto nas Figuras 62 e 63, esta tela permite a visualização dos
dados de forma agrupada e detalhada. A mesma possui diversos filtros no cabeçalho da tela,
botões de consulta do item cadastrado no sistema no rodapé, bem como os totalizadores
disponibilizados.
102
3.3.2.7 Tela de “Consulta de Desempenho com Relação às Vendas”
A tela de “Consulta de Desempenho com Relação às Vendas” permite que os dados
sejam visualizados a partir de três visões: visão do planejamento, das compras, e visão das
vendas efetuadas. Nesta tela são visualizados os itens do planejamento confrontando com os
dados das compras e das vendas. A mesma serve principalmente como apoio ao gerente de
compras, pois, através dela é possível visualizar a diferença do que foi previsto e do que foi
realizado.
Esta tela também possui diversos filtros no cabeçalho, o que facilita a busca de
determinado item planejado. Na mesma também é possível visualizar os itens de forma
agrupada e detalhada, sendo que na grid de “Itens Agrupados” são apresentados os dados dos
itens envolvidos nos planejamentos de compras de forma agrupada, já na grid de “Itens
Detalhados” são apresentados os dados detalhados por planejamento.
Os dados das compras são referentes às compras já efetivadas, ou seja, são
apresentados valores de notas fiscais de entrada já fechadas lançadas no sistema, assim como
as vendas são referentes às notas fiscais de saída também já fechadas. É importante destacar
que um item de planejamento de compras não possui nenhum vínculo com itens de notas
fiscais de saída, sendo que a busca das vendas neste caso obedece apenas os respectivos
períodos do item do planejamento de compras, ao invés de utilizar a chave do item do
planejamento como ocorre na busca dos dados das notas fiscais de entrada. As Figuras 64 e 65
ilustram uma consulta de desempenho com relação às vendas.
103
Figura 64 – Tela de consulta de desempenho com relação às vendas
104
Figura 65 – Demais informações da grid de “Itens Detalhados” da consulta de desempenho com relação às vendas
Conforme pode ser visto nas Figuras 64 e 65, esta tela também apresenta os botões de
consulta do item cadastrado no sistema no rodapé, bem como uma opção no cabeçalho para
exibição somente do planejamento ativo.
105
3.3.2.8 Relatório “Planejamento de Compras - Resumido”
O relatório “Planejamento de Compras - Resumido” permite que o comprador ou
gerente de compras visualize apenas alguns dados gerais dos planejamentos, a fim de obter
algumas informações de maior relevância. A Figura 66 apresenta um exemplo de emissão de
um relatório resumido.
Figura 66 – Relatório resumido de planejamentos de compras
106
3.3.2.9 Relatório “Planejamento de Compras - Detalhado”
O relatório “Planejamento de Compras - Detalhado” permite que o comprador ou
gerente de compras visualize a maioria das informações disponíveis em um planejamento.
Este relatório além de apresentar os dados gerais do planejamento, apresenta também as
informações mais importantes dos itens, bem como os totalizadores de valores e saldo do
planejamento que também se encontram disponíveis no relatório resumido. A Figura 67
apresenta um exemplo de emissão de um relatório detalhado.
Figura 67 – Relatório detalhado de planejamentos de compras
107
3.4 RESULTADOS E DISCUSSÃO
No contexto empresarial de um departamento de compras, percebe-se que a
complexidade existente em qualquer organização exige que os sistemas de informação atuem
de forma a retratar a realidade e a dinâmica destes departamentos. Ou seja, o nível de
detalhamento dos processos inerentes a esta área faz com que exista uma enorme
complexidade nestes sistemas, sendo que o maior desafio é fazer com estes realmente possam
ajudar nas atividades de curto e longo prazo de forma programada.
Embora o módulo desenvolvido ainda não tenha sido disponibilizado para o mercado
até o término do presente trabalho, pode se perceber através de testes feitos juntamente com a
equipe de qualidade de software da empresa Senior Sistemas Corporativos que a metodologia
do Open to Buy mostrou-se eficaz no que se refere ao gerenciamento das compras em uma
empresa varejista. O módulo desenvolvido pode ser aplicado também a outros segmentos
comercias que não sejam do ramo varejista, pois, o mesmo não se resume apenas ao cálculo
do Open to Buy, e sim, a uma série de controles disponíveis para o gerenciamento das
compras em uma empresa. No conceito de Open to Buy, não há a exigência de que este
controle seja feito de forma automatizada em um sistema computacional, porém, recomenda-
se fortemente esta prática. O controle manual, feito em planilhas eletrônicas ou até mesmo em
formulários de papel, torna o gerenciamento praticamente inexistente em um ambiente com
um nível elevado de complexidade. Ainda que possa ser melhorado, o módulo desenvolvido
atende a necessidade e pode ser utilizado em qualquer empresa que deseje dar um passo
inicial para a prática do gerenciamento de compras de forma programada.
Com relação aos trabalhos correlatos, percebeu-se que o módulo de planejamento de
compras desenvolvido possui alguns conceitos semelhantes aos dois sistemas apresentados
disponíveis no mercado, uma vez que o mesmo possui como base o conceito do Open to Buy.
No trabalho correlato de Santos (2006), a autora torna evidente a importância do
gerenciamento de um planejamento de compras como ferramenta para auxiliar a empresa a
atingir seus objetivos de negócio, focando seu estudo de caso em uma empresa varejista de
material de construção. Por ressaltar esta importância, Santos (2006) enfatiza propostas para o
aumento de desempenho da área de compras da empresa analisada, sendo assim, pode se
traçar um paralelo entre o presente trabalho e os assuntos abordados pela autora. Ao realizar o
estudo de caso, Santos (2006) constatou que a empresa em questão adotou medidas após a
entrada da concorrência que possibilitaram diversas melhorias na organização das compras.
108
Durante a pesquisa, descobriu-se que no passado as metas de compras da empresa eram
determinadas pelo comprador, e após a entrada da concorrência, estas metas passaram a ser
estabelecidas pela gerência de compras, com base na projeção de vendas, possibilitando
otimização nos estoques e uma melhoria no fluxo de caixa. Descobriu-se também, que no
passado os compradores adquiriam grandes volumes de mercadorias dos fornecedores em
troca de bonificações e, após a entrada da concorrência, os compradores passaram a avaliar as
propostas dos fornecedores, considerando o custo do investimento em estoque.
Na empresa analisada por Santos (2006), foram criados bloqueios no sistema de
compras com o objetivo de impedir a compra dos produtos acima do limite de cobertura.
Estes procedimentos também contribuíram para a otimização nos estoques e uma melhoria no
fluxo de caixa, além de evitar desbalanceamento do estoque, ou seja, o excesso de alguns
produtos e falta de outros. Com relação às propostas sugeridas pela autora para a referida
empresa, a mesma menciona a alteração da abordagem “de cima para baixo” para a
abordagem “interativa”, porém, conforme mencionado pela própria autora, às propostas foram
recomendadas com base no estudo de caso, não permitindo generalizações para outras
empresas. Desta forma, características semelhantes foram observadas entre o estudo de caso
de Santos (2006) e o módulo de planejamento de compras desenvolvido no presente trabalho.
109
4 CONCLUSÕES
Elaborar planejamentos de compras é fundamental para as empresas que desejam
manterem-se competitivas no mercado, sendo que, estes planejamentos focam suas atenções
no desenvolvimento de estratégias que permitam uma melhoria significativa na gestão do
departamento de compras e das despesas de uma organização. Neste contexto, conclui-se que
o objetivo principal deste trabalho foi atingido, pois, o módulo desenvolvido permite que os
gerentes de compras possam efetuar suas compras de forma programada, de modo a otimizar
os estoques e melhorar o fluxo de caixa da empresa.
Foram feitos testes juntamente com um representante da área de qualidade de software
com grande experiência e domínio do Módulo Comercial do Sistema Sapiens, onde pode se
perceber que o Open to Buy foi um conceito importante aplicado no módulo de planejamento
de compras, sendo que, o mesmo sugere o valor ideal para ser utilizado em compras em um
determinado período. Com a automatização dos processos de planejamentos de compras no
módulo desenvolvido, pode se observar que esta importante etapa presente no departamento
de compras ficou mais fácil e intuitiva de se trabalhar, visto que, o mesmo auxilia desde a
etapa de avaliação de históricos para base do planejamento até o gerenciamento permanente
dos saldos disponíveis para compras.
O objetivo específico de desenvolver um módulo para automatizar os processos de
planejamentos de compras no ERP Sapiens foi atingido. Foi disponibilizado o cadastro de
planejamentos, e com este, todos os recursos e configurações necessárias para que a
programação de compras e o controle das mesmas se adaptem às necessidades de cada
empresa varejista.
Para o objetivo específico de possibilitar que o sistema gerencie o andamento das
compras conforme definido no planejamento, ficou claro que o módulo desenvolvido atende
este objetivo, pois, o controle dos saldos disponíveis para compras é feito no fechamento das
ordens de compra. O sistema possibilita ainda que os compradores sejam avisados ou
impedidos de realizar compras acima dos limites planejados.
O objetivo específico de disponibilizar através do planejamento de compras,
informações sobre o controle de gastos inerentes a esta área, bem como o saldo disponível
para compras, também foi atendido. Foram disponibilizadas diversas telas de consulta através
das quais se pode fazer um acompanhamento completo de todo o planejamento de compras.
Durante a realização deste trabalho, observou-se que a adoção de uma ferramenta de
110
software para gerenciamento das etapas de planejamento de compras é relevante para as
empresas que almejam liderança de mercado. Observou-se também, que normalmente as
empresas varejistas de pequeno porte adotam o controle destes processos através de sistemas
baseado em papel ou planilhas eletrônicas, sendo que, conforme o volume de dados aumenta,
este tipo de controle passa a não atender com agilidade o departamento de compras. Para as
empresas varejistas de médio e grande porte, o planejamento de compras torna-se
indispensável, sendo que, o mesmo terá ainda um grande diferencial se implementado em um
sistema ERP, pois, permitirá desta forma, a visualização das informações relacionadas à área
de compras também em outros departamentos da empresa.
4.1 EXTENSÕES
Com o objetivo de tornar este trabalho ainda mais abrangente e completo, três
extensões que não faziam parte dos objetivos iniciais do mesmo são sugeridas para trabalhos
futuros:
a) desenvolvimento de um módulo de planejamento de vendas com integração com o
módulo de planejamento de compras desenvolvido, a fim de contribuir com
informações importantes para a geração do planejamento de compras;
b) desenvolvimento de um módulo de planejamento de produção com integração com
o módulo de planejamento de compras desenvolvido;
c) desenvolvimento de um módulo de planejamento contábil.
Como melhorias no módulo desenvolvido no presente trabalho, são sugeridas as
seguintes extensões:
a) aplicação do controle dos saldos disponíveis para compras também nos demais
processos existentes no sistema que possibilitam a geração de ordens de compra,
como por exemplo, ordens de compra via cotação, via solicitação de compra, via
contrato, via pedido, entre outros;
b) implementação de uma rotina de envio de e-mail, onde os compradores poderiam
optar por enviar ou não no caso de bloqueio de compras, um e-mail padrão e pré-
formatado, ao gerente de compras, onde este conteria as informações importantes
necessárias para o concedimento de aumento de saldo disponível para compras.
111
REFERÊNCIAS BIBLIOGRÁFICAS
BAILY, Peter; FARMER, David; JESSOP, David; JONES, David. Compras: princípios e administração. 8. ed. São Paulo: Atlas, 2000.
BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. Rio de Janeiro: Campus, 2002.
BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML : guia do usuário. Rio de Janeiro: Campus, 2000.
BRAUDE, Eric. Projeto de software: da programação à arquitetura: uma abordagem baseada em Java. Porto Alegre: Bookman, 2005.
CORONADO, Osmar. Controladoria no atacado e varejo: logística integrada e modelo de gestão sob a óptica da gestão econômica logisticon. São Paulo: Atlas, 2001.
COSTA, Fábio J. C. Leal. Introdução à administração de materiais em sistemas informatizados. São Paulo: iEditora, 2002.
DIAS, Mario; COSTA, Roberto Figueiredo. Manual do comprador: conceitos, técnicas e práticas indispensáveis em um departamento de compras. 4. ed. São Paulo: Edicta, 2006.
FRANCISCHINI, Paulino G.; GURGEL, Floriano do Amaral. Administração de materiais e do patrimônio. São Paulo: Pioneira, 2002.
GRAZZIOTIN, Gilson Valentin. A arte do varejo: o pulo do gato está na compra. 3. ed. São Paulo: Senac, 2003.
GUEDES, Gilleanes T. A. UML : uma abordagem prática. São Paulo: Novatec, 2004.
HURLBUT, Ted. So What exactly is a retail open-to-buy? [S.l.], 2006. Disponível em: <http://www.hurlbutassociates.com/Resource-Details/So-What-Exactly-Is-An-Open-To-Buy-_34.html>. Acesso em: 18 abr. 2009.
IDV. Varejo em números: o comércio brasileiro em números. [S.l.], jun. 2009. Disponível em: <http://www.idv.org.br/varejo-dados-index.aspx>. Acesso em: 02 jun. 2009.
LEVY, Michael; WEITZ, Barton A. Administração de varejo. São Paulo: Atlas, 2000.
MATYJEWICZ, George. Open to buy. [S.l.], 2001. Disponível em: <http://www.etailersdigest.com/resources/Specials/Open_To_Buy.htm>. Acesso em: 18 abr. 2009.
112
MILLENNIUM NETWORK. Millennium . [S.l.], 2006a. Disponível em: <http://www.millennium.com.br/bm.asp>. Acesso em: 23 maio 2009.
______. Varejo: operação. [S.l.], 2006b. Disponível em: <http://www.millennium.com.br/varejooperacao.asp>. Acesso em: 23 maio 2009.
PARENTE, Juracy. Varejo no Brasil: gestão e estratégia. São Paulo: Atlas, 2000.
REZENDE, Denis Alcides. Engenharia de software e sistemas de informação. 3. ed. Rio de Janeiro: Brasport, 2005.
SAP AG. SAP retail merchandise and assortment planning. [S.l.], abr. 2005. Disponível em: <https://www.sap.com/brazil/pdf/company/Arte_BWP_MAP.pdf>. Acesso em: 23 maio 2009.
SANTOS, Rosangela Vilela dos. Propostas para aumento do desempenho da área de compras em empresa varejista. 2006. 96 f. Dissertação (Mestrado Profissionalizante em Administração) - Programa de Pós-Graduação e Pesquisa em Administração e Economia, Faculdade de Economia e Finanças IBMEC, Rio de janeiro.
SEBRAE. Regras básicas para comprar bem. [S.l.], 2005. Disponível em: <http://www.biblioteca.sebrae.com.br/bds/BDS.nsf/80EF7685D096336F03256F9E004D39EE/$File/NT000A38D2.pdf >. Acesso em: 09 maio. 2009.
SENIOR SISTEMAS. Solução sapiens: características. Blumenau, 2009a. Disponível em: <http://www.senior.com.br/website/pt/sapiens-caracteristicas.php>. Acesso em: 16 maio 2009.
______. Soluções de tecnologia sapiens: aplicações cliente. Blumenau, 2009b. Disponível em: <http://www.senior.com.br/website/pt/sapiens-tecnologia.php?txt=5>. Acesso em: 16 maio 2009.
______. Solução sapiens: módulos/funcionalidades. Blumenau, 2009c. Disponível em: <http://www.senior.com.br/website/pt/sapiens-modulos.php>. Acesso em: 16 maio 2009.
______. Solução sapiens: gestão empresarial. Blumenau, 2009d. Disponível em: <http://www.senior.com.br/website/pt/sapiens-principal.php>. Acesso em: 16 maio 2009.
______. Solução sapiens: compras. Blumenau, 2009e. Disponível em: <http://www.senior.com.br/website/pt/sapiens-modulos-compras.php>. Acesso em: 17 maio 2009.
______. Solução sapiens: vendas. Blumenau, 2009f. Disponível em: <http://www.senior.com.br/website/pt/sapiens-modulos-vendas.php>. Acesso em: 17 maio 2009.
113
______. Solução sapiens: estoques. Blumenau, 2009g. Disponível em: <http://www.senior.com.br/website/pt/sapiens-modulos-estoques.php>. Acesso em: 17 maio 2009.
______. Soluções de tecnologia sapiens: implementações. Blumenau, 2009h. Disponível em: <http://www.senior.com.br/website/pt/sapiens-tecnologia.php?txt=2>. Acesso em: 16 maio 2009.
______. Processos do módulo de compras: ordem de compra. Fabiano Stimamiglio Ferreira; Gilson Rogério Manke: Senior Sistemas, 2009i.
______. Processos do módulo de compras: nota fiscal de entrada. Fabiano Stimamiglio Ferreira; Gilson Rogério Manke: Senior Sistemas, 2009j.
______. Ferramentas de apoio: gerador de relatórios.Versão 2.0. Blumenau, 2004. Documento eletrônico disponibilizado com o Sistema Sapiens versão 5.5.1.12.
SENIOR SISTEMAS CORPORATIVOS. Sistema sapiens: ajuda do sapiens. Versão 5.5.1.12. Blumenau, 2009. Documento eletrônico disponibilizado com o Sistema Sapiens versão 5.5.1.12.
SEVERO Filho, João. Administração de logística integrada: materiais, PCP e marketing. 2. ed. Rio de Janeiro: E-papers, 2006.
SILVA, Alberto Manuel Rodrigues da; VIDEIRA, Carlos Alberto Escaleira. UML, metodologias e ferramentas CASE. 2. ed. Portugal: Centro Atlântico, 2005.
SLACK, Nigel; CHAMBERS, Stuart; JOHNSTON, Robert; BETTS, Alan. Gerenciamento de operações e de processos: princípios e prática de impacto estratégico. Porto Alegre: Bookman, 2007.
SYBASE. SQL anywhere. [S.l.], 2009. Disponível em: <http://www.sybase.com.br/products/databasemanagement/sqlanywhere>. Acesso em: 30 maio 2009.
TEIXEIRA, Steve; PACHECO, Xavier. Delphi 5: guia do desenvolvedor. Rio de Janeiro: Campus, 2000.
THEOBALD, Mary Miley. Museum store management. 2. ed. [S.l.]: Altamira Press, 2000.
TONSIG, Sérgio Luiz. Engenharia de software: análise e projetos de sistemas. São Paulo: Futura, 2003.
WATERS, Shari. Open-to-buy planning: controlling your inventory. [S.l.], 2009. Disponível em: <http://retail.about.com/od/merchandisingbuying/a/open_to_buy.htm>. Acesso em: 19 abr. 2009.
114
WESTERMAN, Paul. Data warehousing: using the Wal-Mart model. San Francisco: Morgan Kaufmann, 2001.
115
APÊNDICE A – Definições das tabelas e campos envolvidos no desenvolvimento do módulo de planejamento de compras
Nos Quadros 11, 12, 13, 14, 15, 16, 17 e 18 são apresentadas as definições das
principais tabelas e campos envolvidos no desenvolvimento do módulo de planejamento de
compras.
Tabela: EMPRESA – Empresas Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 NomEmp Nome da empresa Alfanumérico 100
Quadro 11 – Tabela EMPRESA
Tabela: FILIAL – Filiais Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 CodFil Código da filial Númerico 4 NomFil Nome da filial Alfanumérico 100
Quadro 12 – Tabela FILIAL
Tabela: PLANEJCOMPRAS – Planejamentos de Compras – Dados Gerais Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 CodFil Código da filial Númerico 4 NumPla Número do planejamento de compras Númerico 6 DesPla Descrição do planejamento de compras Alfanumérico 50 CodUsu Código do usuário gerador do planejamento Númerico 10 TipPrg Tipo da programação de compras efetuada no
planejamento (O – Por Origem, F – Por Família, P – Por Produto ou A – Por Agrupamento de Produtos)
Alfanumérico 1
TipPer Tipo de período (S – Semanal, Q – Quinzenal ou M – Mensal)
Alfanumérico 1
SitPla Situação do planejamento (A – Ativo ou I – Inativo) Alfanumérico 1 IniVig Data inicial da vigência do planejamento Data dd/mm/yyyy FimVig Data final da vigência do planejamento Data dd/mm/yyyy DatCad Data de cadastro Data dd/mm/yyyy DatAlt Data da última alteração Data dd/mm/yyyy VlrBru Valor bruto do planejamento de compras Numérico 15,2 VlrLiq Valor líquido do planejamento de compras Numérico 15,2 QtdItp Quantidade de itens do planejamento de compras Numérico 3 BloCpr Indicativo se o sistema deve bloquear compras
(Ordens de Compra) de produtos não planejados (L – Libera, A – Avisa ou B – Bloqueia)
Alfanumérico 1
BloCpg Indicativo se o sistema deve bloquear compras (Ordens de Compra) com condição de pagamento não planejada (L – Libera, A – Avisa ou B – Bloqueia)
Alfanumérico 1
116
Campo Descrição Tipo Tamanho SldTot Valot total disponível para compras no período de
vigência Númerico 15,2
UtiTot Valor total já utilizado para compras Númerico 15,2 OtbTot Saldo total disponível para compras no período de
vigência (Open to Buy) Númerico 15,2
TipCtl Tipo de controle do planejamento (Q - Quantidade (Controle Físico), V - Valor (Controle Financeiro) ou A - Ambos (Controle Físico e Financeiro))
Alfanumérico 1
Quadro 13 – Tabela PLANEJCOMPRAS
Tabela: ITENSPLANEJAMENTO – Planejamentos de Compras – Itens Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 CodFil Código da filial Númerico 4 NumPla Número do planejamento de compras Númerico 6 SeqPla Sequência do item do planejamento de compras Númerico 3 CodOri Código da origem do produto Alfanumérico 3 CodFam Código da família de produto Alfanumérico 6 CodPro Código do produto Alfanumérico 14 CodAgp Código do agrupamento de produtos Alfanumérico 5 QtdPla Quantidade planejada para compra Numérico 14,5 CodCpg Condição de pagamento prevista para a compra do
item Alfanumérico 6
DatIni Data inicial da previsão de entrega Data dd/mm/yyyy DatFim Data final da previsão de entrega Data dd/mm/yyyy PerCre Percentual de crescimento aplicado no item Númerico 3 VlrCre Valor de crescimento aplicado no item Númerico 15,2 VlrLit Valor do item Númerico 15,2 VlrBru Valor total bruto do item Númerico 15,2 VlrLiq Valor total líquido do item Númerico 15,2 SldIte Valor disponível para compras no período Númerico 15,2 VlrUti Valor já utilizado para compras (fechamento de
Ordens de Compra) Númerico 15,2
OtbIte Saldo disponível para compras (Open to Buy do item) Númerico 15,2 QtdDpr Quantidade disponível para compras no período Númerico 14,5 QtdUti Quantidade já utilizada para compras (fechamento de
Ordens de Compra) Númerico 14,5
QtdDis Saldo de quantidade disponível para compras Númerico 14,5 Quadro 14 – Tabela ITENSPLANEJAMENTO
Tabela: ORDEMCOMPRA – Ordens de Compra – Dados Gerais Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 CodFil Código da filial Númerico 4 NumOcp Número da ordem de compra Númerico 8 CodFor Código do fornecedor da ordem de compra Númerico 9 DatEmi Data de emissão da ordem de compra Data dd/mm/yyyy CodCpg Código da condição de pagamento Alfanumérico 6 VlrLiq Valor líquido da ordem de compra Númerico 15,2
117
Campo Descrição Tipo Tamanho SitOcp Situação da ordem de compra (1 – Aberto Total,
2 – Aberto Parcial, 4 – Liquidada, 5 – Cancelada, 9 – Não Fechada, entre outras)
Númerico 1
Quadro 15 – Tabela ORDEMCOMPRA
Tabela: ITENSPROOC – Ordens de Compra – Itens de Produto Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 CodFil Código da filial Númerico 4 NumOcp Número da ordem de compra Númerico 8 SeqIpo Sequência de item da ordem de compra Númerico 3 CodPro Código do produto da ordem de compra Alfanumérico 14 QtdPed Quantidade do produto da ordem de compra Númerico 14,5 QtdRec Quantidade recebida do produto da ordem de compra Númerico 14,5 QtdCan Quantidade cancelada do produto da ordem de compra Númerico 14,5 QtdAbe Quantidade em aberto do produto da ordem de compra Númerico 14,5 VlrLiq Valor líquido do produto da ordem de compra Númerico 15,2 DatEnt Data de previsão de entrega para o produto da ordem
de compra Data dd/mm/yyyy
SitIpo Situação do item da ordem de compra (1 – Aberto Total, 2 – Aberto Parcial, 4 – Liquidado, 5 – Cancelado, 9 – Não Fechado, entre outros)
Númerico 1
EmpPla Código da empresa do planejamento de compras Númerico 4 FilPla Código da filial do planejamento de compras Númerico 4 NumPla Número do planejamento de compras Númerico 6 SeqPla Sequência do item do planejamento de compras Númerico 3
Quadro 16 – Tabela ITENSPROOC
Tabela: NFENTRADA – Notas Fiscais de Entrada – Dados Gerais Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 CodFil Código da filial Númerico 4 CodFor Código do fornecedor da nota fiscal de entrada Númerico 9 NumNfc Número da nota fiscal de entrada Númerico 9 CodSnf Código da série da nota fiscal de entrada Alfanumérico 3 DatEmi Data de emissão da nota fiscal de entrada Data dd/mm/yyyy CodCpg Código da condição de pagamento Alfanumérico 6 VlrLiq Valor líquido da nota fiscal de entrada Númerico 15,2 SitNfc Situação da nota fiscal de entrada (1 – Digitada,
2 – fechada ou 3 – Cancelada) Númerico 1
Quadro 17 – Tabela NFENTRADA
Tabela: ITENSPRONFE – Notas Fiscais de Entrada – Itens de Produto Campo Descrição Tipo Tamanho CodEmp Código da empresa Númerico 4 CodFil Código da filial Númerico 4 CodFor Código do fornecedor da nota fiscal de entrada Númerico 9 NumNfc Número da nota fiscal de entrada Númerico 9 CodSnf Código da série da nota fiscal de entrada Alfanumérico 3
118
Campo Descrição Tipo Tamanho SeqIpc Sequência do item na nota fiscal de entrada Númerico 4 FilOcp Código da filial da ordem de compra Numérico 4 NumOcp Número da ordem de compra Numérico 8 SeqIpo Sequência do item de produto na ordem de compra Numérico 3 CodPro Código do produto da nota fiscal de entrada Alfanumérico 14 QtdRec Quantidade recebida do produto da ordem de compra Numérico 14,5 VlrLiq Valor líquido do produto da ordem de compra Numérico 15,2 EmpPla Código da empresa do planejamento de compras Númerico 4 FilPla Código da filial do planejamento de compras Númerico 4 NumPla Número do planejamento de compras Númerico 6 SeqPla Sequência do item do planejamento de compras Númerico 3
Quadro 18 – Tabela ITENSPRONFE
119
APÊNDICE B – Métodos de maior relevância de algumas das classes utilizadas no desenvolvimento do módulo de planejamento de compras
No Quadro 19 é apresentada a codificação de alguns dos métodos mais relevantes da
classe TPlanejamento.
constructor TPlanejamento.Create; begin inherited Create; CustomPla := TExCustomRecord.Create(False); CustomPla.BeginAddFields; CustomPla.AddField2('CodEmp', rdtWord, 00,False); CustomPla.AddField2('CodFil', rdtWord, 00,False); CustomPla.AddField2('NumPla', rdtInteger, 00,False) ; CustomPla.AddField2('CodUsu', rdtInteger, 00,False) ; CustomPla.AddStringField('DesPla', smkShort, 50); CustomPla.AddStringField('TipPrg', smkChar, 01); CustomPla.AddStringField('TipPer', smkChar, 01); CustomPla.AddStringField('SitPla', smkChar, 01); CustomPla.AddField2('PerDes', rdtDouble, 00,False) ; CustomPla.AddDateField('IniVig', True); CustomPla.AddDateField('FimVig', True); CustomPla.AddDateField('DatCad', True); CustomPla.AddDateField('DatAlt', True); CustomPla.AddField2('VlrLiq', rdtDouble, 00,False); CustomPla.AddField2('VlrBru', rdtDouble, 00,False); CustomPla.AddField2('QtdItp',rdtWord,0,False); CustomPla.AddStringField('BloCpr', smkChar, 01); CustomPla.AddStringField('BloCpg', smkChar, 01); CustomPla.AddField2('SldTot', rdtDouble, 00,False); CustomPla.AddField2('UtiTot', rdtDouble, 00,False); CustomPla.AddField2('OtbTot', rdtDouble, 00,False); CustomPla.AddStringField('TipCtl', smkChar, 01); CustomPla.EndAddFields; LItens := TList.Create; FGravado := False; FEstado := stInserindo; FItensNaoGravados := False; Init; end; destructor TPlanejamento.Destroy; var i : SWord; begin if (LItens.Count > 0) then begin for i := 0 to LItens.Count - 1 do TItemPlanejamento(LItens.Items[i]).Destroy; end; LItens.Free; CustomPla.Destroy; inherited Destroy; end; procedure TPlanejamento.Grava; var DadosPlanejamento, DadosAuxPlanejamento: RecDa dosPlanejamento; begin FillChar(DadosPlanejamento,SizeOF(DadosPlanejamento ),0);
120
if (RegPlanejamento.CodUsu = 0) then RegPlanejamento.CodUsu := UserDef.Code; if (RegPlanejamento.DatCad = 0) then RegPlanejamento.DatCad := SDatas.DataHoje; Move(RegPlanejamento, DadosPlanejamento,sizeof(Dado sPlanejamento)); FillChar(DadosAuxPlanejamento,SizeOf(DadosAuxPlanej amento),0); DadosAuxPlanejamento.CodEmp := DadosPlanejamento.Co dEmp; DadosAuxPlanejamento.CodFil := DadosPlanejamento.Co dFil; DadosAuxPlanejamento.NumPla := DadosPlanejamento.Nu mPla; if (AccessSQL(TablePlanejamento,'SELECT NUMPLA FR OM PLANEJCOMPRAS + ' 'WHERE CODEMP = {CODEMP} AND + ' CODFIL = {CODFIL} AND + ' NUMPLA = {NUMPLA}',rmSingleRow, @DadosAu xPlanejamento) = 0) then SMessage(smRaise,TransStrFmt('', 'Planejamento de compras %d já cadastrado. + ' 'Possivelmente o mesmo pode ter sido + ' 'gravado por o utro usuário durante a + ' 'digitação!', [DadosAuxPlane jamento.NumPla], True)); if (Access(TablePlanejamento,aoWrite,@RegPlanejam ento) <> 0) then begin SMessage(smRaise,TransStrFmt('', 'Não foi poss ível gravar o planejamento + ' 'de compras % d. Possivelmente já existe + ' 'um planejame nto gravado com este mesmo + ' 'número!', [DadosAuxPlan ejamento.NumPla], True)); end; FGravado := True; end; procedure TPlanejamento.PosicionaItemPlanejamento(P SeqPla : SWord); var i : SInteger; begin IniciaLeituraItens; for i := 0 to (LItens.Count - 1) do begin if (TItemPlanejamento(LItens.Items[i]).FCodEmp = R egPlanejamento.CodEmp) and (TItemPlanejamento(LItens.Items[i]).FCodFil = Reg Planejamento.CodFil) and (TItemPlanejamento(LItens.Items[i]).FNumPla = Reg Planejamento.NumPla) and (TItemPlanejamento(LItens.Items[i]).FSeqPla = PSe qPla) then begin PosIte := i; break; end; end; end; procedure TPlanejamento.AlteraItem; begin TItemPlanejamento(LItens.Items[PosIte]).Altera; end; procedure TPlanejamento.GravaItem; begin TItemPlanejamento(LItens.Items[PosIte]).Grava; end;
121
procedure TPlanejamento.AlteraNumeroPlanejamentoIte ns; var i : SWord; begin if (LItens.Count > 0) then begin for i := 0 to LItens.Count - 1 do TItemPlanejamento(LItens.Items[i]).FNumPl a := RegPlanejamento.NumPla; end; end; function TPlanejamento.RetornaPrimeiroItemPlanejame nto : TItemPlanejamento; begin PosIte := 0; if (LItens.Count > 0) then result := TItemPlanejamento(LItens.Items[PosIt e]) else result := nil; end; function TPlanejamento.RetornaProximoItemPlanejamen to : TItemPlanejamento; begin inc(PosIte); if (LItens.Count >= PosIte + 1) then result := TItemPlanejamento(LItens.Items[PosIt e]) else result := nil; end; procedure TPlanejamento.InicializaListaItens; var i : SWord; begin if Assigned(LItens) then begin if LItens.Count > 0 then for i := 0 to LItens.Count -1 do TItemPlanejamento(LItens.Items[i]).F ree; LItens.Clear; end; end; function TPlanejamento.CriaItemPlanejamento(PSeqPla : SWord) : Integer; begin Result := LItens.Add(TItemPlanejamento.Create(self, RegPlanejamento.CodEmp, RegPlanejamento.CodFil,RegPlan ejamento.NumPla,PSeqPla)); RegPlanejamento.QtdItp := RegPlanejamento.QtdItp + 1; end; function TPlanejamento.CalculaOtbTot : SDouble; var i : SWord; ItemAux : TItemPlanejamento; OtbTotAux : SDouble; begin OtbTotAux := 0; if (LItens.Count > 0) then begin for i := 0 to LItens.Count - 1 do begin ItemAux := TItemPlanejamento(LItens.Items [i]); OtbTotAux := SRound(OtbTotAux + ItemAux.F OtbIte, 2); end; end; Result := OtbTotAux; end;
122
function TPlanejamento.Carrega : SBoolean; var QueryPla : trTQuery; QueryItem : trTQuery; begin Result := False; QueryPla := DataBase.NewQuery; try QueryPla.Command := 'SELECT * FROM PLANEJCOMPRAS ' + 'WHERE CODEMP = {CODEMP} AND 'CODFIL = {CODFIL } AND 'NUMPLA = {NUMPLA }'; QueryPla.FindParam('CodEmp').AsInteger := RegPlane jamento.CodEmp; QueryPla.FindParam('CodFil').AsInteger := RegPlane jamento.CodFil; QueryPla.FindParam('NumPla').AsInteger := FNumPla; QueryPla.Open; if not(QueryPla.EOF) then begin FillChar(RegPlanejamento, SizeOf(RegPlanejamento) ,0); QueryPla.FieldsToRecord(CustomPla,RegPlanejamento ); FGravado := True; FEstado := stEditando; AtualizaLiquido; QueryItem := nil; try QueryItem := DataBase.NewQuery; QueryItem.Command := 'SELECT SEQPLA FROM ITENSPL ANEJAMENTO ' + 'WHERE CODEMP={CODEMP} AND ' + 'CODFIL={CODFIL} AND ' + 'NUMPLA={NUMPLA} ' + 'ORDER BY SEQPLA'; QueryItem.FindParam('CodEmp').AsInteger := RegPlanejamento.CodEmp; QueryItem.FindParam('CodFil').AsInteger := RegPlanejamento.CodFil; QueryItem.FindParam('NumPla').AsInteger := FNumP la; QueryItem.Bidirectional := True; QueryItem.Open; LItens.Clear; while not(QueryItem.EOF) do begin LItens.Add(TItemPlanejame nto.CreateCarrega(self, RegPlanejamen to.CodEmp, RegPlanejamen to.CodFil, FNumPla, QueryItem.Fin dField('SeqPla').AsInteger)); FMaximaSequenciaItens := QueryItem.FindField('SeqPla').AsInteger; QueryItem.Next; end; finally QueryItem.Free; end; Result := True; end else FGravado := False; finally QueryPla.Free; end; end;
123
procedure TPlanejamento.DestroiItemPlanejamento; var DadosItemPlanejamento : RecDadosItemPlanejamen to; UpdItemPla : trTUpdate; ItemGravado : SBoolean; begin ItemGravado := False; TItemPlanejamento(LItens.Items[PosIte]).Estado := i tExcluindo; DataBase.StartTransaction; try if (Database.Select('SELECT 1 FROM ITENSPLAN EJAMENTO ' + 'WHERE CODEMP = {1} AN D CODFIL = {2} AND ' + 'NUMPLA = {3} AN D SEQPLA = {4}', [RegPlanejamento.CodEmp, RegPlanejamento.CodFil, RegPlanejamento.NumPla, TItemPlanejamento(LIten s.Items[PosIte]).FSeqPla], TableItensPlanejamento, DadosItemPlanejamento)) then begin ItemGravado := True; UpdItemPLa := DataBase.NewUpdate; try UpdItemPla.Command := 'DELETE FROM I TENSPLANEJAMENTO ' + 'WHERE CODEM P = {CODEMP} AND ' + 'CODFI L = {CODFIL} AND ' + 'NUMPL A = {NUMPLA} AND ' + 'SEQPL A = {SEQPLA}'; UpdItemPla.FindParam('CodEmp').AsInt eger := RegPlanejamento.CodEmp; UpdItemPla.FindParam('CodFil').AsInt eger := RegPlanejamento.CodFil; UpdItemPla.FindParam('NumPla').AsInt eger := RegPlanejamento.NumPLa; UpdItemPla.FindParam('SeqPla').AsInt eger := TItemPlanejamento(LItens.Items[PosIt e]).FSeqPla; UpdItemPla.Execute; RegPlanejamento.QtdItp := RegPlaneja mento.QtdItp - 1; // se gravado, chama o método de alt eração do planejamento // para que o cabeçalho seja atualiz ado na base de dados if (Gravado) then Altera; finally UpdItemPla.free; end; end; TItemPlanejamento(LItens.Items[PosIte]).Destro y; LItens.Delete(PosIte); // se o item estiver gravado na base, a quanti dade já foi incrementada if not(ItemGravado) then RegPlanejamento.QtdItp := RegPlanejamento .QtdItp - 1; except DataBase.Rollback; SMessage(smRaise,SExceptionMsg); end; Database.Commit; end; // Retorna True se o planejamento for excluído com sucesso function TPlanejamento.ExcluiPlanejamento : SBoolea n; var DadosPlanejamento : RecDadosPlanejamento; begin Result := False;
124
if (SMessage(smReturn,TransStr('', 'Deseja realme nte excluir o planejamento ' + 'e seus itens? [&Sim,&Não]', True)) = 0) then begin ExcluiItensPlanejamento; DadosPlanejamento.CodEmp := RegPlanejamento.Co dEmp; DadosPlanejamento.CodFil := RegPlanejamento.Co dFil; DadosPlanejamento.NumPla := RegPlanejamento.Nu mPla; if (Access(TablePlanejamento,aoDelete,@ Dado sPlanejamento) <> 0) then SMessage(smRaise,TransStr('', 'Não foi possível exc luir o planejamento!', True)) else Result := True; end else Result := False; end;
Quadro 19 – Código fonte dos métodos mais relevantes da classe TPlanejamento
No Quadro 20 é apresentada a codificação de alguns dos métodos mais relevantes da
classe TItemPlanejamento.
constructor TItemPlanejamento.Create(PDadosGerais : TObject; PCodEmp,PCodFi l : SWord; PNumPla : SLon gint; PSeqPla : SWor d); begin inherited Create; CriaCustom; FillChar(RegItem ,SizeOf(RegItem), 0); FillChar(BRegItem,SizeOf(BRegItem),0); FillChar(RegItemBase,SizeOf(RegItemBase),0); DadosGerais := PDadosGerais; RegItem.CodEmp := PCodEmp; RegItem.CodFil := PCodFil; RegItem.NumPla := TPlanejamento(DadosGerais).FNumPl a; RegItem.SeqPla := PSeqPla; FIndCon := True; FEstado := itInserindo; end; constructor TItemPlanejamento.CreateCarrega(PDadosG erais : TObject; PCodEmp ,PCodFil : SWord; PNumPla : SLongint; PSeqPla : SWord); var Query : TRTQuery; begin inherited Create; CriaCustom; // Executa método semelhante ao Create da classe TPlanejamento DadosGerais := PDadosGerais; Query := nil; try Query := DataBase.NewQuery; Query.Command := 'SELECT * FROM ITENSPLANEJAMENTO ' + 'WHERE CODEMP = {CODEMP} AND 'CODFIL = {CODFIL} AND ' + 'NUMPLA = {NUMPLA} AND 'SEQPLA = {SEQPLA}' ; Query.FindParam('CodEmp').AsInteger := PCodEmp; Query.FindParam('CodFil').AsInteger := PCodFil; Query.FindParam('NumPla').AsInteger := PNumPla; Query.FindParam('SeqPla').AsInteger := PSeqPla; Query.Open; if not(Query.EOF) then begin
125
FillChar(RegItem, SizeOf(RegItem),0); Query.FieldsToRecord(CustomItem,RegItem); Query.FieldsToRecord(CustomItem,BRegIt em); Query.FieldsToRecord(CustomItem,RegIte mBase); FEstado := itModificando; FIndCon := True; end; finally Query.free; end; FIndCon := True; end; destructor TItemPlanejamento.Destroy; begin CustomItem.Destroy; inherited destroy; end; procedure TItemPlanejamento.Altera; begin RegItem.NumPla := TPlanejamento(DadosGerais).FNumPl a; if (Access(TableItensPlanejamento,aoReWrite,@RegI tem) <> 0) then SMessage(smRaise,TransStr('', 'Não foi possível gr avar os ' + 'itens do plan ejamento!', True)); Move(RegItem,RegItemBase,SizeOf(RegItemBase)); end; procedure TItemPlanejamento.Grava; begin RegItem.NumPla := TPlanejamento(DadosGerais).FNumPl a; if (Access(TableItensPlanejamento,aoWrite,@RegIte m) <> 0) then SMessage(smRaise,TransStr('', 'Não foi possíve l gravar os ' + 'itens do planej amento)!', True)); FEstado := itModificando; Move(RegItem,RegItemBase,SizeOf(RegItemBase)); end; procedure TItemPlanejamento.CalculaValores(RegTotai s : TRegTotais); var DadosItemPlanejamento : RecDadosItemPlanejamen to; begin TPlanejamento(DadosGerais).DiminuiValores(RegTotais ); Move(RegItem,BRegItem,SizeOf(RegItem)); Move(RegItem, DadosItemPlanejamento,sizeof(DadosIte mPlanejamento)); CalculaItemPlanejamento(DadosItemPlanejamento); Move(DadosItemPlanejamento,RegItem,sizeof(DadosItem Planejamento)); end;
Quadro 20 – Código fonte dos métodos mais relevantes da classe TItemPlanejamento
No Quadro 21 é apresentada a codificação de alguns dos métodos mais relevantes da
classe Frm_CadastraPlanejamento.
126
procedure Frm_CadastraPlanejamento.Processar; var DadosItemPlanejamento: RecDadosItemPlanejament o; begin ConsisteCamposCabecalho; if (GridItens.Counts = 0) then sMessage(smRaise,TransStr('', 'Não existem itens n o planejamento ' + 'para processar !', True)); try Database.StartTransaction; try if (ControlandoMultiUsuario) then Database.CompareNm('Form_CadastraPla nejamento'); // objeto instanciado da classe TPlanejam ento if (Planejamento.Estado <> stEditando) then Planejamento.Grava else Planejamento.Altera; GridItens.DisconnectTable; try GridItens.First; repeat Planejamento.PosicionaItemPlane jamento(RegItem.SeqPla); FillChar(DadosItemPlanejamento, SDadosItemPlanejamento,0); if (Database.Select('SELECT 1 F ROM ITENSPLANEJAMENTO ' + 'WHERE CODEMP = {1} AND ' + ' CODFIL = {2} AND ' + ' NUMPLA = {3} AND ' + ' SEQPLA={4}', [Planejam ento.FCodEmp, Planejam ento.FCodFil, Planejam ento.FNumPla, RegItem. SeqPla], TableIte nsPlanejamento, DadosIte mPlanejamento)) then begin Planejamento.AlteraItem; end else begin Planejamento.GravaItem; end; until not(GridItens.Next); finally GridItens.ConnectTable; end; if (Planejamento.BuscaPlanejamentoAtivo = 0) then begin if (SMessage(smReturn,TransStr('', 'Deseja ativar ' + 'o planejamento? ' + '[&Sim,&Não]', True)) = 0) then AtivaPlanejamento; end; Database.Commit; except Database.RollBack; SMessage(smRaise,SExceptionMsg); end; except if (Planejamento.Estado <> stEditando) then Planejamento.Gravado := False; SMessage(smRaise,TransStr('', 'Não foi possíve l processar ' + 'o planejamento - ',True) + SExceptionMsg); end;
127
Planejamento.Free; GridItens.ClearList; LimpaCampos; SMessage(smReturn,TransStr('', 'Processamento execu tado com sucesso! [&OK]',True)); end; procedure Frm_CadastraPlanejamento.Excluir; begin if ExisteVinculoItensPlanejamentoComOrdensDeCompr a(Planejamento.FNumPla, False) then SMessage(smRaise, TransStr('', 'Exclusão não p ermitida, já existem ordens ' + 'de compra liga das a este planejamento!', True)); if (ControlandoMultiUsuario) then Database.CompareNm('Form_CadastraPlanejamento' ); try Database.StartTransaction; if (Planejamento.ExcluiPlanejamento) then ClickCancelar; Database.Commit; except DataBase.RollBack; SMessage(smRaise,SExceptionMsg); end; end;
Quadro 21 – Código fonte dos métodos mais relevantes da classe Frm_CadastraPlanejamento
No Quadro 22 é apresentada a codificação do método Mostrar da classe
Frm_BasePlanejamento.
procedure Frm_BasePlanejamento.Mostrar; var NroLinhasAgr : SLongint; Conta : SLongint; SQLAux : String; SQLAGR : TrtQuery; SQLDET : TrtQuery; QtdSugestoesDataFinal : SInteger; procedure CarregaDocumentos; var FiltroOrigem : String; FiltroFamilia : String; FiltroProduto : String; FiltroAgrupamentoProduto : String; FiltroFornecedor : String; FiltroCliente : String; procedure AplicaSelectFamiliaOrdensCompra ; begin SQLAux := 'SELECT ITENSPROOC.CODFAM, ' + 'SUM(ITENSPROOC.QTDPED - I TENSPROOC.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) AS VAL OR, ' + '((SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI))/ ' + // Valor '(SUM(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN))) ' + // Qtd 'AS PRECOMEDIO ' + 'FROM ITENSPROOC,ORDEMCOMP RA,PRODUTO,FAMILIA ' + 'WHERE ORDEMCOMPRA.CODEMP = {CODEMP} AND ' + 'ORDEMCOMPRA.CODFIL = {CODFIL} AND ' + 'ITENSPROOC.CODEMP = O RDEMCOMPRA.CODEMP AND ' + 'ITENSPROOC.CODFIL = O RDEMCOMPRA.CODFIL AND ' +
128
'ITENSPROOC.NUMOCP = O RDEMCOMPRA.NUMOCP AND ' + 'PRODUTO.CODEMP = ITEN SPROOC.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROOC.CODPRO AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'ITENSPROOC.CODFAM <> '' '' AND ' + 'FAMILIA.CODEMP = PROD UTO.CODEMP AND ' + 'FAMILIA.CODFAM = PROD UTO.CODFAM AND ' + 'FAMILIA.TIPPRO = ''C' ' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) > 0 AND ' + '((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) > 0 AND ' + // Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROOC.SITIPO IN (1,2,4) AND ' + 'ORDEMCOMPRA.DATFEC BE TWEEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY ITENSPROOC.CODFAM ' + 'ORDER BY ITENSPROOC.CODFAM' ; end; procedure AplicaSelectFamiliaPedidos; begin SQLAux := 'SELECT ITENSPROPEDIDO.CODFAM, ' + 'SUM(ITENSPROPEDIDO.QTDPED - ITENSPROPEDIDO.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI) AS VALOR, ' + '((SUM((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI))/ ' + '(SUM(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN))) ' + 'AS PRECOMEDIO FROM ITENSP ROPEDIDO,PEDIDO,PRODUTO, ' + 'FAMILIA ' + 'WHERE PEDIDO.CODEMP = {CODE MP} AND ' + 'PEDIDO.CODFIL = {CODF IL} AND ' + 'ITENSPROPEDIDO.CODEMP = PEDIDO.CODEMP AND ' + 'ITENSPROPEDIDO.CODFIL = PEDIDO.CODFIL AND ' + 'ITENSPROPEDIDO.NUMPED = PEDIDO.NUMPED AND ' + 'PRODUTO.CODEMP = ITEN SPROPEDIDO.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROPEDIDO.CODPRO AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'ITENSPROPEDIDO.CODFAM <> '' '' AND ' + 'FAMILIA.CODEMP = PROD UTO.CODEMP AND ' + 'FAMILIA.CODFAM = PROD UTO.CODFAM AND ' + 'FAMILIA.TIPPRO = ''C' ' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) ' + '> 0 AND ' + '((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI ) > 0 AND ' + // Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROPEDIDO .SITIPD IN (1,2,4) AND ' + 'PEDIDO.DATFEC BETWEEN {EDATBAS INI} AND {EDATBASFIM} ' + 'GROUP BY ITENSPROPEDIDO.COD FAM ' + 'ORDER BY ITENSPROPEDIDO.COD FAM'; end;
129
procedure AplicaSelectFamiliaNotasEntrada ; begin SQLAux := 'SELECT ITENSPRONFE.CODFAM, ' + 'SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI))/ ' + '(SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV))) ' + 'AS PRECOMEDIO FROM ITENSP RONFE,NFENTRADA,PRODUTO, ' + 'FAMILIA ' + 'WHERE NFENTRADA.CODEMP = {C ODEMP} AND ' + 'NFENTRADA.CODFIL = {C ODFIL} AND ' + 'ITENSPRONFE.CODEMP = NFENTRADA.CODEMP AND ' + 'ITENSPRONFE.CODFIL = NFENTRADA.CODFIL AND ' + 'ITENSPRONFE.CODFOR = NFENTRADA.CODFOR AND ' + 'ITENSPRONFE.NUMNFC = NFENTRADA.NUMNFC AND ' + 'ITENSPRONFE.CODSNF = NFENTRADA.CODSNF AND ' + 'PRODUTO.CODEMP = ITEN SPRONFE.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFE.CODPRO AND ' + 'ITENSPRONFE.CODFAM <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'FAMILIA.CODEMP = PROD UTO.CODEMP AND ' + 'FAMILIA.CODFAM = PROD UTO.CODFAM AND ' + 'FAMILIA.TIPPRO = ''C' ' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) > 0 AND ' + '((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI) > 0 AND ' + 'NFENTRADA.SITNFC = 2 AND ' + // Nota fechada 'NFENTRADA.DATEMI BETW EEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY ITENSPRONFE.CODFAM ' + 'ORDER BY ITENSPRONFE.CODFAM '; end; procedure AplicaSelectFamiliaNotasSaida; begin SQLAux := 'SELECT ITENSPRONFS.CODFAM, ' + 'SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI))/ ' + '(SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV))) ' + 'AS PRECOMEDIO FROM ITENSP RONFS,NFSAIDA,PRODUTO, ' + 'FAMILIA ' + 'WHERE NFSAIDA.CODEMP = {COD EMP} AND ' + 'NFSAIDA.CODFIL = {COD FIL} AND ' + 'ITENSPRONFS.CODEMP = NFSAIDA.CODEMP AND ' + 'ITENSPRONFS.CODFIL = NFSAIDA.CODFIL AND ' + 'ITENSPRONFS.NUMNFV = NFSAIDA.NUMNFV AND ' + 'ITENSPRONFS.CODSNF = NFSAIDA.CODSNF AND ' + 'PRODUTO.CODEMP = ITEN SPRONFS.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFS.CODPRO AND ' + 'ITENSPRONFS.CODFAM <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'FAMILIA.CODEMP = PROD UTO.CODEMP AND ' + 'FAMILIA.CODFAM = PROD UTO.CODFAM AND ' + 'FAMILIA.TIPPRO = ''C' ' AND ' +
130
FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) > 0 AND ' + '((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) > 0 AND ' + 'NFSAIDA.SITNFV = 2 AN D ' + // Nota fechada 'NFSAIDA.DATEMI BETWEE N {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY ITENSPRONFS.CODFAM ' + 'ORDER BY ITENSPRONFS.CODFAM '; end; procedure AplicaSelectProdutoOrdensCompra ; begin SQLAux := 'SELECT ITENSPROOC.CODPRO, ' + 'SUM(ITENSPROOC.QTDPED - I TENSPROOC.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) AS VAL OR, ' + '((SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI))/ ' + '(SUM(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN))) ' + 'AS PRECOMEDIO FROM ITENSP ROOC,ORDEMCOMPRA,PRODUTO ' + 'WHERE ORDEMCOMPRA.CODEMP = {CODEMP} AND ' + 'ORDEMCOMPRA.CODFIL = {CODFIL} AND ' + 'ITENSPROOC.CODEMP = O RDEMCOMPRA.CODEMP AND ' + 'ITENSPROOC.CODFIL = O RDEMCOMPRA.CODFIL AND ' + 'ITENSPROOC.NUMOCP = O RDEMCOMPRA.NUMOCP AND ' + 'PRODUTO.CODEMP = ITEN SPROOC.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROOC.CODPRO AND ' + 'ITENSPROOC.CODPRO <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) > 0 AND ' + '((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) > 0 AND ' + // Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROOC.SITIPO IN (1,2,4) AND ' + 'ORDEMCOMPRA.DATFEC BE TWEEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY ITENSPROOC.CODPRO ' + 'ORDER BY ITENSPROOC.CODPRO' ; end; procedure AplicaSelectProdutoPedidos; begin SQLAux := 'SELECT ITENSPROPEDIDO.CODPRO, ' + 'SUM(ITENSPROPEDIDO.QTDPED - ITENSPROPEDIDO.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI) AS VALOR, ' + '((SUM((ITENSPROPEDIDO.QTD PED - ITENSPROPEDIDO.QTDCAN) * 'ITENSPROPEDIDO.PREUNI))/ ' + '(SUM(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN))) ' + 'AS PRECOMEDIO FROM ITENSP ROPEDIDO,PEDIDO,PRODUTO ' + 'WHERE PEDIDO.CODEMP = {CODE MP} AND ' + 'PEDIDO.CODFIL = {CODF IL} AND ' + 'ITENSPROPEDIDO.CODEMP = PEDIDO.CODEMP AND ' + 'ITENSPROPEDIDO.CODFIL = PEDIDO.CODFIL AND ' + 'ITENSPROPEDIDO.NUMPED = PEDIDO.NUMPED AND ' +
131
'PRODUTO.CODEMP = ITEN SPROPEDIDO.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROPEDIDO.CODPRO AND ' + 'ITENSPROPEDIDO.CODPRO <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) ' + '> 0 AND ' + '((ITENSPROPEDIDO.QTDP ED - ITENSPROPEDIDO.QTDCAN) * 'ITENSPROPEDIDO.PREUNI ) > 0 AND ' + // Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROPEDIDO.SITIPD IN (1,2,4) AND ' + 'PEDIDO.DATFEC BETWEEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY ITENSPROPEDIDO.COD PRO ' + 'ORDER BY ITENSPROPEDIDO.COD PRO'; end; procedure AplicaSelectProdutoNotasEntrada ; begin SQLAux := 'SELECT ITENSPRONFE.CODPRO, ' + 'SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI))/ ' + '(SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV))) ' + 'AS PRECOMEDIO FROM ITENSP RONFE,NFENTRADA,PRODUTO ' + 'WHERE NFENTRADA.CODEMP = {C ODEMP} AND ' + 'NFENTRADA.CODFIL = {C ODFIL} AND ' + 'ITENSPRONFE.CODEMP = NFENTRADA.CODEMP AND ' + 'ITENSPRONFE.CODFIL = NFENTRADA.CODFIL AND ' + 'ITENSPRONFE.CODFOR = NFENTRADA.CODFOR AND ' + 'ITENSPRONFE.NUMNFC = NFENTRADA.NUMNFC AND ' + 'ITENSPRONFE.CODSNF = NFENTRADA.CODSNF AND ' + 'PRODUTO.CODEMP = ITEN SPRONFE.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFE.CODPRO AND ' + 'ITENSPRONFE.CODPRO <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) > 0 AND ' + '((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * 'ITENSPRONFE.PREUNI) > 0 AND ' + 'NFENTRADA.SITNFC = 2 AND ' + // Nota fechada 'NFENTRADA.DATEMI BETW EEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY ITENSPRONFE.CODPRO ' + 'ORDER BY ITENSPRONFE.CODPRO '; end; procedure AplicaSelectProdutoNotasSaida; begin SQLAux := 'SELECT ITENSPRONFS.CODPRO, ' + 'SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' +
132
'ITENSPRONFS.PREUNI))/ ' + '(SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV))) ' + 'AS PRECOMEDIO FROM ITENSP RONFS,NFSAIDA,PRODUTO ' + 'WHERE NFSAIDA.CODEMP = {COD EMP} AND ' + 'NFSAIDA.CODFIL = {COD FIL} AND ' + 'ITENSPRONFS.CODEMP = NFSAIDA.CODEMP AND ' + 'ITENSPRONFS.CODFIL = NFSAIDA.CODFIL AND ' + 'ITENSPRONFS.NUMNFV = NFSAIDA.NUMNFV AND ' + 'ITENSPRONFS.CODSNF = NFSAIDA.CODSNF AND ' + 'PRODUTO.CODEMP = ITEN SPRONFS.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFS.CODPRO AND ' + 'ITENSPRONFS.CODPRO <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) > 0 AND ' + '((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) > 0 AND ' + 'NFSAIDA.SITNFV = 2 AN D ' + // Nota fechada 'NFSAIDA.DATEMI BETWEE N {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY ITENSPRONFS.CODPRO ' + 'ORDER BY ITENSPRONFS.CODPRO '; end; procedure AplicaSelectOrigemOrdensCompra; begin SQLAux := 'SELECT PRODUTO.CODORI, ' + 'SUM(ITENSPROOC.QTDPED - I TENSPROOC.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) AS VAL OR, ' + '((SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI))/ ' + '(SUM(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN))) ' + 'AS PRECOMEDIO FROM ITENSP ROOC,ORDEMCOMPRA,PRODUTO, ' + 'ORIGEM ' + 'WHERE ORDEMCOMPRA.CODEMP = {CODEMP} AND ' + 'ORDEMCOMPRA.CODFIL = {CODFIL} AND ' + 'ITENSPROOC.CODEMP = O RDEMCOMPRA.CODEMP AND ' + 'ITENSPROOC.CODFIL = O RDEMCOMPRA.CODFIL AND ' + 'ITENSPROOC.NUMOCP = O RDEMCOMPRA.NUMOCP AND ' + 'PRODUTO.CODEMP = ITEN SPROOC.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROOC.CODPRO AND ' + 'PRODUTO.CODORI <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'ORIGEM.CODEMP = PRODU TO.CODEMP AND ' + 'ORIGEM.CODORI = PRODU TO.CODORI AND ' + 'ORIGEM.TIPPRO = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) > 0 AND ' + '((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) > 0 AND ' + // Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROOC.SITIPO IN (1,2,4) AND ' + 'ORDEMCOMPRA.DATFEC BE TWEEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY PRODUTO.CODORI ' +
133
'ORDER BY PRODUTO.CODORI'; end; procedure AplicaSelectOrigemPedidos; begin SQLAux := 'SELECT PRODUTO.CODORI, ' + 'SUM(ITENSPROPEDIDO.QTDPED - ITENSPROPEDIDO.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI) AS VALOR, ' + '((SUM((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI))/ ' + '(SUM(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN))) ' + 'AS PRECOMEDIO FROM ITENSP ROPEDIDO,PEDIDO,PRODUTO, ' + 'ORIGEM ' + 'WHERE PEDIDO.CODEMP = {CODE MP} AND ' + 'PEDIDO.CODFIL = {CODF IL} AND ' + 'ITENSPROPEDIDO.CODEMP = PEDIDO.CODEMP AND ' + 'ITENSPROPEDIDO.CODFIL = PEDIDO.CODFIL AND ' + 'ITENSPROPEDIDO.NUMPED = PEDIDO.NUMPED AND ' + 'PRODUTO.CODEMP = ITEN SPROPEDIDO.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROPEDIDO.CODPRO AND ' + 'PRODUTO.CODORI <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'ORIGEM.CODEMP = PRODU TO.CODEMP AND ' + 'ORIGEM.CODORI = PRODU TO.CODORI AND ' + 'ORIGEM.TIPPRO = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) ' + '> 0 AND ' + '((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI ) > 0 AND ' + // Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROPEDIDO.SITIPD IN (1,2,4) AND ' + 'PEDIDO.DATFEC BETWEEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY PRODUTO.CODORI ' + 'ORDER BY PRODUTO.CODORI'; end; procedure AplicaSelectOrigemNotasEntrada; begin SQLAux := 'SELECT PRODUTO.CODORI, ' + 'SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI))/ ' + '(SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV))) ' + 'AS PRECOMEDIO FROM ITENSP RONFE,NFENTRADA,PRODUTO, ' + 'ORIGEM ' + 'WHERE NFENTRADA.CODEMP = {C ODEMP} AND ' + 'NFENTRADA.CODFIL = {C ODFIL} AND ' + 'ITENSPRONFE.CODEMP = NFENTRADA.CODEMP AND ' + 'ITENSPRONFE.CODFIL = NFENTRADA.CODFIL AND ' + 'ITENSPRONFE.CODFOR = NFENTRADA.CODFOR AND ' + 'ITENSPRONFE.NUMNFC = NFENTRADA.NUMNFC AND ' + 'ITENSPRONFE.CODSNF = NFENTRADA.CODSNF AND ' + 'PRODUTO.CODEMP = ITEN SPRONFE.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFE.CODPRO AND ' + 'PRODUTO.CODORI <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' +
134
'PRODUTO.INDVEN = ''S' ' AND ' + 'ORIGEM.CODEMP = PRODU TO.CODEMP AND ' + 'ORIGEM.CODORI = PRODU TO.CODORI AND ' + 'ORIGEM.TIPPRO = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) > 0 AND ' + '((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI) > 0 AND ' + 'NFENTRADA.SITNFC = 2 AND ' + // Nota fechada 'NFENTRADA.DATEMI BETW EEN {EDATBASINI} AND '{EDATBASFIM} ' + 'GROUP BY PRODUTO.CODORI ' + 'ORDER BY PRODUTO.CODORI'; end; procedure AplicaSelectOrigemNotasSaida; begin SQLAux := 'SELECT PRODUTO.CODORI, ' + 'SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI))/ ' + '(SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV))) ' + 'AS PRECOMEDIO FROM ITENSP RONFS,NFSAIDA,PRODUTO,ORIGEM ' + 'WHERE NFSAIDA.CODEMP = {COD EMP} AND ' + 'NFSAIDA.CODFIL = {COD FIL} AND ' + 'ITENSPRONFS.CODEMP = NFSAIDA.CODEMP AND ' + 'ITENSPRONFS.CODFIL = NFSAIDA.CODFIL AND ' + 'ITENSPRONFS.NUMNFV = NFSAIDA.NUMNFV AND ' + 'ITENSPRONFS.CODSNF = NFSAIDA.CODSNF AND ' + 'PRODUTO.CODEMP = ITEN SPRONFS.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFS.CODPRO AND ' + 'PRODUTO.CODORI <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'ORIGEM.CODEMP = PRODU TO.CODEMP AND ' + 'ORIGEM.CODORI = PRODU TO.CODORI AND ' + 'ORIGEM.TIPPRO = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) > 0 AND ' + '((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) > 0 AND ' + 'NFSAIDA.SITNFV = 2 AN D ' + // Nota fechada 'NFSAIDA.DATEMI BETWEE N {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY PRODUTO.CODORI ' + 'ORDER BY PRODUTO.CODORI'; end; procedure AplicaSelectAgrupamentoProdutoO rdensCompra; begin SQLAux := 'SELECT PRODUTO.CODAGC, ' + 'SUM(ITENSPROOC.QTDPED - I TENSPROOC.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) AS VAL OR, ' + '((SUM((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI))/ ' +
135
'(SUM(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN))) ' + 'AS PRECOMEDIO ' + 'FROM ITENSPROOC,ORDEMCOMP RA,PRODUTO,AGRUPAMENTO ' + 'WHERE ORDEMCOMPRA.CODEMP = {CODEMP} AND ' + 'ORDEMCOMPRA.CODFIL = {CODFIL} AND ' + 'ITENSPROOC.CODEMP = O RDEMCOMPRA.CODEMP AND ' + 'ITENSPROOC.CODFIL = O RDEMCOMPRA.CODFIL AND ' + 'ITENSPROOC.NUMOCP = O RDEMCOMPRA.NUMOCP AND ' + 'PRODUTO.CODEMP = ITEN SPROOC.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROOC.CODPRO AND ' + // Ignora produtos que não possuem agrupamento // para comercial cada strados 'PRODUTO.CODAGC <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'AGRUPAMENTO.CODEMP = PRODUTO.CODEMP AND ' + 'AGRUPAMENTO.CODAGP = PRODUTO.CODAGC AND ' + 'AGRUPAMENTO.TIPAGP = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) > 0 AND ' + '((ITENSPROOC.QTDPED - ITENSPROOC.QTDCAN) * ' + 'ITENSPROOC.PREUNI) > 0 AND ' + // Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROOC .SITIPO IN (1,2,4) AND ' + 'ORDEMCOMPRA.DATFEC BE TWEEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY PRODUTO.CODAGC ' + 'ORDER BY PRODUTO.CODAGC'; end; procedure AplicaSelectAgrupamentoProdutoP edidos; begin SQLAux := 'SELECT PRODUTO.CODAGC, ' + 'SUM(ITENSPROPEDIDO.QTDPED - ITENSPROPEDIDO.QTDCAN) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI) AS VALOR, ' + '((SUM((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI))/ ' + '(SUM(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN))) ' + 'AS PRECOMEDIO ' + 'FROM ITENSPROPEDIDO,PEDID O,PRODUTO,AGRUPAMENTO ' + 'WHERE PEDIDO.CODEMP = {CODE MP} AND ' + 'PEDIDO.CODFIL = {CODF IL} AND ' + 'ITENSPROPEDIDO.CODEMP = PEDIDO.CODEMP AND ' + 'ITENSPROPEDIDO.CODFIL = PEDIDO.CODFIL AND ' + 'ITENSPROPEDIDO.NUMPED = PEDIDO.NUMPED AND ' + 'PRODUTO.CODEMP = ITEN SPROPEDIDO.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPROPEDIDO.CODPRO AND ' + 'PRODUTO.CODAGC <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'AGRUPAMENTO.CODEMP = PRODUTO.CODEMP AND ' + 'AGRUPAMENTO.CODAGP = PRODUTO.CODAGC AND ' + 'AGRUPAMENTO.TIPAGP = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) ' + '> 0 AND ' + '((ITENSPROPEDIDO.QTDPE D - ITENSPROPEDIDO.QTDCAN) * ' + 'ITENSPROPEDIDO.PREUNI ) > 0 AND ' +
136
// Aberto Total, Abert o Parcial ou Liquidado 'ITENSPROPEDIDO.SITIPD IN (1,2,4) AND ' + 'PEDIDO.DATFEC BETWEEN {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY PRODUTO.CODAGC ' + 'ORDER BY PRODUTO.CODAGC'; end; procedure AplicaSelectAgrupamentoProdutoN otasEntrada; begin SQLAux := 'SELECT PRODUTO.CODAGC, ' + 'SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) ' + 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI))/ ' + '(SUM(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV))) ' + 'AS PRECOMEDIO ' + 'FROM ITENSPRONFE,NFENTRAD A,PRODUTO,AGRUPAMENTO ' + 'WHERE NFENTRADA.CODEMP = {C ODEMP} AND ' + 'NFENTRADA.CODFIL = {C ODFIL} AND ' + 'ITENSPRONFE.CODEMP = NFENTRADA.CODEMP AND ' + 'ITENSPRONFE.CODFIL = NFENTRADA.CODFIL AND ' + 'ITENSPRONFE.CODFOR = NFENTRADA.CODFOR AND ' + 'ITENSPRONFE.NUMNFC = NFENTRADA.NUMNFC AND ' + 'ITENSPRONFE.CODSNF = NFENTRADA.CODSNF AND ' + 'PRODUTO.CODEMP = ITEN SPRONFE.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFE.CODPRO AND ' + 'PRODUTO.CODAGC <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'AGRUPAMENTO.CODEMP = PRODUTO.CODEMP AND ' + 'AGRUPAMENTO.CODAGP = PRODUTO.CODAGC AND ' + 'AGRUPAMENTO.TIPAGP = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroFornecedor + '(ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) > 0 AND ' + '((ITENSPRONFE.QTDEST - ITENSPRONFE.QTDDEV) * ' + 'ITENSPRONFE.PREUNI) > 0 AND ' + 'NFENTRADA.SITNFC = 2 AND ' + // Nota fechada 'NFENTRADA.DATEMI BETW EEN {EDATBASINI} 'AND {EDATBASFIM} ' + 'GROUP BY PRODUTO.CODAGC ' + 'ORDER BY PRODUTO.CODAGC'; end; procedure AplicaSelectAgrupamentoProdutoN otasSaida; begin SQLAux := 'SELECT PRODUTO.CODAGC, ' + 'SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) 'AS QUANTIDADE, ' + 'SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) AS VA LOR, ' + '((SUM((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI))/ ' + '(SUM(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV))) ' + 'AS PRECOMEDIO ' + 'FROM ITENSPRONFS,NFSAIDA, PRODUTO,AGRUPAMENTO ' + 'WHERE NFSAIDA.CODEMP = {COD EMP} AND ' + 'NFSAIDA.CODFIL = {COD FIL} AND ' + 'ITENSPRONFS.CODEMP = NFSAIDA.CODEMP AND ' + 'ITENSPRONFS.CODFIL = NFSAIDA.CODFIL AND ' + 'ITENSPRONFS.NUMNFV = NFSAIDA.NUMNFV AND ' + 'ITENSPRONFS.CODSNF = NFSAIDA.CODSNF AND ' +
137
'PRODUTO.CODEMP = ITEN SPRONFS.CODEMP AND ' + 'PRODUTO.CODPRO = ITEN SPRONFS.CODPRO AND ' + 'PRODUTO.CODAGC <> '' '' AND ' + 'PRODUTO.TIPPRO = ''C' ' AND ' + 'PRODUTO.INDVEN = ''S' ' AND ' + 'AGRUPAMENTO.CODEMP = PRODUTO.CODEMP AND ' + 'AGRUPAMENTO.CODAGP = PRODUTO.CODAGC AND ' + 'AGRUPAMENTO .TIPAGP = ''C'' AND ' + FiltroOrigem + FiltroFamilia + FiltroProduto + FiltroAgrupamentoProd uto + FiltroCliente + '(ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) > 0 AND ' + '((ITENSPRONFS.QTDFAT - ITENSPRONFS.QTDDEV) * ' + 'ITENSPRONFS.PREUNI) > 0 AND ' + 'NFSAIDA.SITNFV = 2 AN D ' + // Nota fechada 'NFSAIDA.DATEMI BETWEE N {EDATBASINI} AND ' + '{EDATBASFIM} ' + 'GROUP BY PRODUTO.CODAGC ' + 'ORDER BY PRODUTO.CODAGC'; end; begin LMemGridAgr.ClearList; LMemGridDet.ClearList([oclCancelFilter, oclCan celRange]); LMemGridAgr.DisConnectTable; wwGridAgr.CheckMasterRange; FormBarraProgresso := TFrm_BarraProgresso.Crea te(Application); SQLAGR := DataBase.NewQuery; SQLDET := DataBase.NewQuery; try // Select Agrupado case Ctrl('RGHistorico').ItemIndex of 0 : // Tratamento Ordens de Compra begin if not(SIsNull(Ctrl('ECodFam' ).Text,fkString)) then FiltroFamilia:= '(' + SELE CTIONFILTER('ITENSPROOC.CODFAM', Ctrl('E CodFam').Text) + ') AND '; if not(SIsNull(Ctrl('ECodPro' ).Text,fkString)) then FiltroProduto:= '(' + SELE CTIONFILTER('ITENSPROOC.CODPRO', Ctrl('E CodPro').Text) + ') AND '; if not(SIsNull(Ctrl('ECodFor').Text,fkString)) th en FiltroFornecedor := '(' + SELECTIONFILTER( 'ORDE MCOMPRA.CODFOR', Ctrl ('ECodFor').Text) + ') AND '; if not(SIsNull(Ctrl('ECodOri' ).Text,fkString)) then FiltroOrigem := '('+ SELEC TIONFILTER('PRODUTO.CODORI', Ctrl('EC odOri').Text) + ') AND '; if not(SIsNull(Ctrl('ECodAgp' ).Text,fkString)) then FiltroAgrupamentoProduto : = '(' + SELECTIONFILTER( 'PRODUTO.CODAGC', Ctrl('ECodAgp').Text) + ') AND '; case TipoProgramacao of 'O' : AplicaSelectOrigemOr densCompra; 'F' : AplicaSelectFamiliaO rdensCompra; 'P' : AplicaSelectProdutoO rdensCompra; 'A' : AplicaSelectAgrupame ntoProdutoOrdensCompra; end; end;
138
1 : // Tratamento Pedidos begin if not(SIsNull(Ctrl('ECodFam' ).Text,fkString)) then FiltroFamilia := '(' + SEL ECTIONFILTER( 'ITENSP ROPEDIDO.CODFAM', Ctrl(' ECodFam').Text) + ') AND '; if not(SIsNull(Ctrl('ECodPro' ).Text,fkString)) then FiltroProduto := '(' + SEL ECTIONFILTER( 'ITENSPRO PEDIDO.CODPRO', Ctrl('E CodPro').Text) + ') AND '; if not(SIsNull(Ctrl('ECodCli' ).Text,fkString)) then FiltroCliente := '(' + SEL ECTIONFILTER('PEDIDO.CODCLI', Ctrl('E CodCli').Text) + ') AND '; if not(SIsNull(Ctrl('ECodOri' ).Text,fkString)) then FiltroOrigem := '('+ SELEC TIONFILTER('PRODUTO.CODORI', Ctrl('EC odOri').Text) + ') AND '; if not(SIsNull(Ctrl('ECodAgp' ).Text,fkString)) then FiltroAgrupamentoProduto : = '(' + SELECTIONFILTER( 'PRODUTO.CODAGC', Ctrl('ECodAgp').Text) + ') AND '; case TipoProgramacao of 'O' : AplicaSelectOrigemPe didos; 'F' : AplicaSelectFamiliaP edidos; 'P' : AplicaSelectProdutoP edidos; 'A' : AplicaSelectAgrupame ntoProdutoPedidos; end; end; 2 : // Tratamento Notas Fiscais de Entrada begin if not(SIsNull(Ctrl('ECodFam' ).Text,fkString)) then FiltroFamilia:='(' + SELEC TIONFILTER('ITENSPRONFE.CODFAM', Ctrl('EC odFam').Text) + ') AND '; if not(SIsNull(Ctrl('ECodPro' ).Text,fkString)) then FiltroProduto:='(' + SELEC TIONFILTER('ITENSPRONFE.CODPRO', Ctrl('EC odPro').Text) + ') AND '; if not(SIsNull(Ctrl('ECodFor' ).Text,fkString)) then FiltroFornecedor := '(' + SELECTIONFILTER( 'NFENT RADA.CODFOR', Ctrl( 'ECodFor').Text) + ') AND '; if not(SIsNull(Ctrl('ECodOri' ).Text,fkString)) then FiltroOrigem := '('+ SELEC TIONFILTER('PRODUTO.CODORI', Ctrl('ECo dOri').Text) + ') AND '; if not(SIsNull(Ctrl('ECodAgp' ).Text,fkString)) then FiltroAgrupamentoProduto : = '(' + SELECTIONFILTER( 'PRODUTO.CODAGC', Ctrl('ECodAgp').Text) + ') AND '; case TipoProgramacao of 'O' : AplicaSelectOrigemNo tasEntrada; 'F' : AplicaSelectFamiliaN otasEntrada; 'P' : AplicaSelectProdutoN otasEntrada; 'A' : AplicaSelectAgrupame ntoProdutoNotasEntrada; end; end;
139
3 : // Tratamento Notas Fiscais de Saída begin if not(SIsNull(Ctrl('ECodFam' ).Text,fkString)) then FiltroFamilia:='(' + SELEC TIONFILTER('ITENSPRONFS.CODFAM', Ctrl('EC odFam').Text) + ') AND '; if not(SIsNull(Ctrl('ECodPro' ).Text,fkString)) then FiltroProduto:='(' + SELEC TIONFILTER('ITENSPRONFS.CODPRO', Ctrl('EC odPro').Text) + ') AND '; if not(SIsNull(Ctrl('ECodCli' ).Text,fkString)) then FiltroCliente := '(' + SEL ECTIONFILTER('NFSAIDA.CODCLI', Ctrl('EC odCli').Text) + ') AND '; if not(SIsNull(Ctrl('ECodOri' ).Text,fkString)) then FiltroOrigem := '('+ SELEC TIONFILTER('PRODUTO.CODORI', Ctrl('ECo dOri').Text) + ') AND '; if not(SIsNull(Ctrl('ECodAgp' ).Text,fkString)) then FiltroAgrupamentoProduto : = '(' + SELECTIONFILTER( 'PRODUTO.CODAGC', Ctrl('ECodAgp').Text) + ') AND '; case TipoProgramacao of 'O' : AplicaSelectOrigemNo tasSaida; 'F' : AplicaSelectFamiliaN otasSaida; 'P' : AplicaSelectProdutoN otasSaida; 'A' : AplicaSelectAgrupame ntoProdutoNotasSaida; end; end; end; SQLAGR.Command := SQLAux; SQLAGR.Bidirectional := True; SQLAGR.FindParam('CODEMP').AsInteger := C EMPRESA.EMPRESA.CodEmp; SQLAGR.FindParam('CODFIL').AsInteger := C FILIAL.FILIAL.CodFil; if (EDatBasIni = 0) then SQLAGR.FindParam('EDATBASINI').AsDat eTime:= SStrToDate('01/01/1901') else SQLAGR.FindParam('EDATBASINI').AsDat eTime:= SDateToDateTime(EDatBasIni); if (EDatBasFim = 0) then SQLAGR.FindParam('EDATBASFIM').AsDat eTime := SDatas.DataHoje else SQLAGR.FindParam('EDATBASFIM').AsDat eTime:= SDateToDateTime(EDatBasFim); SQLAGR.Open; if (not SQLAGR.Eof) then begin FormBarraProgresso.Show; FormBarraProgresso.ProgressBar.Posit ion := 0; case TipoProgramacao of 'O' : FormBarraProgresso.Atuali zaBarra(TransStr('', 'Carregando Origens...'), '',False,taStrAll); 'F' : FormBarraProgresso. Atual izaBarra(TransStr('', 'Carregando Famílias...'), '',False,taStrAll); 'P' : FormBarraProgresso. Atual izaBarra(TransStr('', 'Carregando Produtos...'), '',False,taStrAll); 'A' : FormBarraProgresso. Atual izaBarra(TransStr('', 'Carregando A grupamentos de Produtos...'), '',False,taStrAll); end; FormBarraProgresso.ProgressBar.Max : = SQLAGR.Count; NroLinhasAgr := SQLAGR.Count; Conta := 0;
140
while not(SQLAGR.Eof) do begin QtdSugestoesDataFinal := 0; // Inicializa datas EDatBasIniAux := EDatBasIni; case ETipPer of 'S' : EDatBasFimAux := RetornaProximoSabadoDaSemana(EDatBasIni); 'Q' : EDatBasFimAux := RetornaDa taFinalQuinzena(EDatBasIni); 'M' : EDatBasFimAux := RetornaDa taUltimoDiaMes(EDatBasIni); end; if (EDatBasFimAux > EDatBasFi m) then EDatBasFimAux := EDatBasFi m; Inc(Conta); FillChar(RegAgr, SizeOf(RegAgr) , 0); RegAgr.SelAgr := 0; RegAgr.CodEmp := CEMPRESA.EMPRE SA.CodEmp; case TipoProgramacao of 'O' : RegAgr.CodOri:= SQLA GR.FindField('CODORI').AsString; 'F' : RegAgr.CodFam:= SQLA GR.FindField('CODFAM').AsString; 'P' : RegAgr.CodPro:= SQLA GR.FindField('CODPRO').AsString; 'A' : RegAgr.CodAgp:= SQLA GR.FindField('CODAGC').AsString; end; RegAgr.QtdTot := sRound(SQLAGR.Fin dField('QUANTIDADE').AsFloat,5); RegAgr.PreMed := sRound(SQLAGR.Fin dField('PRECOMEDIO').AsFloat,5); RegAgr.VlrTot := sRound(SQLAGR. FindField('VALOR').AsFloat,5); RegAgr.SldTot := SRound(RegAgr. VlrTot + (RegAgr.VlrTot * (EPerCr e / 100)),5); RegAgr.TipPer := Ctrl('LDesTip' ).Text + ' Agrupado'; if (EDatBasIni = 0) then RegAgr.IniPer := SStrToDat e('01/01/1901') else RegAgr.IniPer := EDatBasIn i; if (EDatBasFim = 0) then RegAgr.FimPer := SDatas.Da taHoje else RegAgr.FimPer := EDatBasFi m; LMemGridAgr.Add; // Alimenta filtro para ser uti lizado no select detalhado FiltroFamilia := ''; FiltroProduto := ''; case Ctrl('RGHistorico').ItemIn dex of // Ordens de Compra 0 : case TipoProgramacao of 'O' : FiltroOrig em := '(PRODUTO.CODORI = ''' + RegAgr.CodOri + ''') AND '; 'F' : FiltroFami lia:='(ITENSPROOC.CODFAM = ''' + RegAgr.CodFam + ''') AND '; 'P' : FiltroProd uto:='(ITENSPROOC.CODPRO = ''' + RegAgr.CodPro + ''') AND '; 'A' : FiltroAgru pamentoProduto := '(PRODUTO.CODAGC = ''' + RegAgr.CodAgp + ''') AND '; end; 1 : case TipoProgramacao of // Pedidos 'O' : FiltroOrig em := '(PRODUTO.CODORI = ''' + RegAgr.CodOri + ''') AND '; 'F' : FiltroFami lia := '(ITENSPROPEDIDO.CODFAM = ''' + RegAgr.CodFam + ''') AND '; 'P' : FiltroProd uto := '(ITENSPROPEDIDO.CODPRO = ''' + RegAgr.CodPro + ''') AND '; 'A' : FiltroAgru pamentoProduto :=
141
'(PRODUTO.CODAGC = ''' + RegAgr.CodAgp + ''') AND '; end; 2 : case TipoProgramacao of // Notas Fiscais de Entrada 'O' : FiltroOrig em := '(PRODUTO.CODORI = ''' + RegAgr.CodOri + ''') AND '; 'F' :FiltroFamil ia:='(ITENSPRONFE.CODFAM = ''' + RegAgr.CodFam + ''') AND '; 'P' :FiltroProdu to:='(ITENSPRONFE.CODPRO = ''' + RegAgr.CodPro + ''') AND '; 'A' : FiltroAgru pamentoProduto := '(PRODUTO.CODAGC = ''' + RegAgr.CodAgp + ''') AND '; end; 3 : case TipoProgramacao of // Notas Fiscais de Saída 'O' : FiltroOrig em := '(PRODUTO.CODORI = ''' + RegAgr.CodOri + ''') AND '; 'F' :FiltroFamil ia:='(ITENSPRONFS.CODFAM = ''' + RegAgr.CodFam + ''') AND '; 'P' :FiltroProdu to:='(ITENSPRONFS.CODPRO = ''' + RegAgr.CodPro + ''') AND '; 'A' : FiltroAgru pamentoProduto := '(PRODUTO.CODAGC = ''' + RegAgr.CodAgp + ''') AND '; end; end; // Select Detalhado while (EDatBasFimAux <= EDatBas Fim) and (QtdSugestoesDataFinal <= 1) do begin // É necessário aplicar no vamente o select para // o detalhe, pois, os fil tros foram alterados case Ctrl('RGHistorico').I temIndex of 0 : case TipoProgram acao of // Ordens de Compra 'O' : Aplic aSelectOrigemOrdensCompra; 'F' : Aplic aSelectFamiliaOrdensCompra; 'P' : Aplic aSelectProdutoOrdensCompra; 'A' : AplicaSelec tAgrupamentoProdutoOrdensCompra; end; 1 : case TipoProgram acao of // Pedidos 'O' : Aplic aSelectOrigemPedidos; 'F' : Aplic aSelectFamiliaPedidos; 'P' : Aplic aSelectProdutoPedidos; 'A' : AplicaSelec tAgrupamentoProdutoPedidos; end; 2 : case TipoProgram acao of // Notas de Entrada 'O' : Aplic aSelectOrigemNotasEntrada; 'F' : Aplic aSelectFamiliaNotasEntrada; 'P' : Aplic aSelectProdutoNotasEntrada; 'A' : AplicaSelec tAgrupamentoProdutoNotasEntrada; end; 3 : case TipoProgram acao of // Notas de Saída 'O' : Aplic aSelectOrigemNotasSaida; 'F' : Aplic aSelectFamiliaNotasSaida; 'P' : Aplic aSelectProdutoNotasSaida; 'A' : AplicaSelec tAgrupamentoProdutoNotasSaida; end; end; SQLDET.Close; SQLDET.Command := SQLAux; SQLDET.Bidirectional := Tr ue; SQLDET.FindParam('CODEMP') .AsInteger := CEMPRESA.EMPRESA.CodEmp;
142
SQLDET.FindParam('CODFIL') .AsInteger := CFILIAL.FILIAL.CodFil; if (EDatBasIniAux = 0) t hen SQLDET.FindParam('EDA TBASINI').AsDateTime := SStrToDate('01/01/1901') else SQLDET.FindParam('EDA TBASINI').AsDateTime := SDateToDateTime(EDatBasIniAux); if (EDatBasIniAux = 0) t hen SQLDET.FindParam('EDA TBASFIM').AsDateTime := SDatas.DataHoje else SQLDET.FindParam('EDA TBASFIM').AsDateTime := SDateToDateTime(EDatBasFimAux); SQLDET.Open; LMemGridDet.DisconnectTabl e; try if not(SQLDET.Eof) then begin FillChar(RegDet, SizeOf(RegDet), 0); RegDet.CodEmp := CEMPRESA.EMPRESA.CodEmp; case TipoProgram acao of 'O' : RegDe t.CodOri := SQLD ET.FindField('CODORI').AsString; 'F' : RegDe t.CodFam := SQLD ET.FindField('CODFAM').AsString; 'P' : RegDe t.CodPro := SQLD ET.FindField('CODPRO').AsString; 'A' : RegDe t.CodAgp := SQLD ET.FindField('CODAGC').AsString; end; RegDet.QtdIte := sRound(SQLDET.Fin dField('QUANTIDADE').AsFloat,5); RegDet.PreMed := sRound(SQLDET.Fin dField('PRECOMEDIO').AsFloat,5); RegDet.VlrIte := sRound(SQLDE T.FindField('VALOR').AsFloat,5); RegDet.SldIte := SRound(RegDet.VlrIte + (RegD et.VlrIte * (EPerCre / 100)),5); RegDet.TipPer := 'Quebra ' + Ctrl('LDesTip').Text; if (EDatBasIni = 0) then RegDet.IniP er := SStrToDate('01/01/1901') else RegDet.IniP er := EDatBasIniAux; if (EDatBasFim = 0) then RegDet.FimP er := SDatas.DataHoje else RegDet.FimP er := EDatBasFimAux; LMemGridDet.Add; end; finally LMemGridDet.First; LMemGridDet.ConnectTa ble; case ETipPer of 'S' : begin EDatBasIni Aux := RetornaProximoDom ingoDaSemana(EDatBasIniAux + 1); EDatBasFim Aux := RetornaProximoSa badoDaSemana(EDatBasFimAux + 1); end; 'Q' : begin EDatBasIni Aux := RetornaInicioPro ximaQuinzena(EDatBasIniAux + 1); EDatBasFim Aux := RetornaFimPro ximaQuinzena(EDatBasFimAux + 1); end;
143
'M' : begin // Está po sicionando no último dia do mês, // então s ó incrementa um para pegar // o próxi mo dia 1° EDatBasIni Aux := EDatBasFimAux + 1; EDatBasFim Aux := Retorna DataUltimoDiaMes(EDatBasIniAux); end; end; if (EDatBasFimAux > EDatBasFim) then begin EDatBasFimAux := EDatBasFim; inc(QtdSugestoes DataFinal); end; end; end; SQLAGR.Next; case TipoProgramacao of 'O': FormBarraProgresso. A tualizaBarra(Format(TransStr('', ' Carregando Origens...%s de %s'), [IntToStr( Conta),IntToStr(NroLinhasAgr)]), ' ', True,taStrAll); 'F': FormBarraProgresso. A tualizaBarra(Format(TransStr('', 'C arregando Famílias...%s de %s'), [IntToStr( Conta),IntToStr(NroLinhasAgr)]), '' , True,taStrAll); 'P': FormBarraProgresso. A tualizaBarra(Format(TransStr('', 'C arregando Produtos...%s de %s'), [IntToStr( Conta),IntToStr(NroLinhasAgr)]), '' , True,taStrAll); 'A': FormBarraProgresso. A tualizaBarra(Format(TransStr('', 'Carregando Agrupa mentos de Produtos...%s de %s'), [IntToStr( Conta),IntToStr(NroLinhasAgr)]), '' , True,taStrAll); end; end; end; finally SQLAGR.Free; SQLDET.Free; FormBarraProgresso.Free; LMemGridAgr.ConnectTable; TratamentoEntradaLinhaGridAgrupada; end; end; // Início método Mostrar begin if (EDatBasIni = 0) and (EDatBasFim = 0) then begin Ctrl('EDatBasIni').SetFocus; if (ETipPer in ['S','Q']) then SMessage(smRaise,TransStr('', 'É necessário i nformar data ' + 'inicial e dat a final!', True)) else SMessage(smRaise,TransStr('', 'É necessár io informar mês ' + 'inicial e mês final!', True)) end; Ctrl('GridAgr').Enabled := False; Ctrl('GridDet').Enabled := False; Ctrl('Processar').Enabled := False; Ctrl('Marcar').Enabled := False; Ctrl('Desmarcar').Enabled := False;
144
CarregaDocumentos; // Tratamentos finais if (not LMemGridAgr.First) then SMessage(smReturn,TransStr('', 'Nenhum documen to encontrado![&OK]', True)) else begin Ctrl('Processar').Enabled := True; Ctrl('Marcar').Enabled := True; Ctrl('Desmarcar').Enabled := True; HabilitaDesabilitaCabecalho(False); if LMemGridAgr.First then begin Ctrl('GridAgr').Enabled := True; Ctrl('GridDet').Enabled := True; HabilitaDesabilitaBotoesConsulta; end; end; end;
Quadro 22 – Código fonte do método Mostrar da classe Frm_BasePlanejamento