Sei sulla pagina 1di 96

Curso

SQL, FOCCO
VISION e
FOCCOMAIL

2014
Sejam bem vindos ao Curso de SQL, Focco Vision e Focco MAIL.

Neste curso de 2 dias trabalharemos com 3 ferramentas que sero muito teis no dia-a-dia das
suas empresas , trazendo vantagem competitiva.

Espero que ao final do curso tenham levado para casa mais conhecimento e novas
experincias.

Obrigado pela confiana


SQL para no Desenvolvedores
[Digite texto]

DIREITOS AUTORAIS

2011| Focco Sistemas de Gesto | Todos os direitos reservados.

As apostilas de treinamento da Universidade Focco so materiais de


propriedade intelectual e a sua reproduo total ou parcial
terminantemente proibida.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

PR-REQUISITOS DO CURSO

Os participantes deste curso devem ter:

Acesso base da empresa via Terminal Services e neste deve ter


acesso ao Internet Explorer e ter permisso para gerar relatrios.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

PBLICO ALVO

Este curso se destina a:

Clientes e demais pessoas interessadas em aprender a elaborar selects


em SQL para gerar relatrios no FoccoVISION e gerar mensagens a
serem enviadas no FoccoMAIL.

Durao Curso: 8 horas.

Notas para o usurio:

Este material de treinamento no um programa de auto-aprendizado.


Cada material complementa as explicaes do instrutor.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

OBJETIVOS DO CURSO

Ao concluir este curso voc estar apto a:

Elaborar selects em SQL e entender a estrutura e os relacionamentos


das tabelas do FoccoERP.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

SQL para no Desenvolvedores

O Curso de SQL para no desenvolvedores uma introduo ao


funcionamento da linguagem, estrutura de dados tabelas do FoccoERP e seus
relacionamentos.

1. INTRODUO AO SQL

Banco de dados relacional

Conjunto de objetos ou relaes que armazenam os dados.

Conjunto de operadores que podem agir na relaes.

Integridade de dados para preciso e consistncia.

Baseado em relaes entre tabelas.

Apresenta sua estrutura atravs de um Modelo ER (Entidade


Relacional).

Componentes: Tabelas, Colunas e Relacionamentos.

Um modelo ER uma ilustrao de vrias tabelas em um negcio e as


relaes entre elas.

Um modelo ER derivado de especificaes empresariais ou narrativas e


construdo durante a fase de anlise do ciclo de vida do desenvolvimento de
sistemas. Modelos ER separam e organizam as informaes necessrias por
um negcio a partir das atividades executadas dentro deste.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

2. Estrutura de Dados (Tabelas FoccoERP)


Exemplo de um modelo ER (Entidade de Relacionamento)

Tabela: algo que possui significado sobre o qual as informaes precisam ser
conhecidas. Exemplos: TCLIENTES, TFORNECEDORES
Coluna: descreve ou qualifica caractersticas de uma entidade uma
propriedade de uma tabela.
Relacionamento: associao nomeada entre entidades que faz a ligao entre
as informaes.
Exemplos:

Tabela Coluna

TNFS_SAIDA NUM_NF

TNFS_ENTRADA VLR_TOTAL

TCLIENTES COD_CLI

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

3. Funcionamento da Linguagem
SQL - STRUCTURED QUERY LANGUAGE
A linguagem SQL lhe permite comunicar com o servidor.

Permite definir, recuperar e manipular dados em tabelas.

4. Funo SELECT
Comando SELECT Bsico
SELECT identifica quais colunas
FROM identifica qual tabela
WHERE restringe as informaes

Exemplo Colunas Tabela Restrio

SELECT COD_CLI FROM TCLIENTES COD_CLI TCLIENTES

SELECT NUM_NF FROM TNFS_SAIDA NUM_NF TNFS_SAIDA NUM_NF = 15050


WHERE NUM_NF = 15050

SELECT COD_ITEM, DESC_TECNICA FROM TITENS DESC_TECNICA= PARAFUSO


TITENS COD_ITEM
DESC_TECNICA
WHERE DESC_TECNICA= PARAFUSO

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

5. Relacionamentos entre tabelas


Relacionamentos - JOIN

Quando dados de mais de uma tabela so requeridos, uma condio


JOIN utilizada.

As tabelas so relacionadas atravs de valores comuns que existem em


colunas correspondentes, que normalmente so colunas chaves
primrias ou chaves estrangeiras.

Quando a condio de JOIN invlida ou omitida, o resultado um


produto cartesiano no qual sero exibidas todas as combinaes de
todas as linhas.

JOIN Exemplo

SELECT TFORNECEDORES.DESCRICAO, TCIDADES.CIDADE


FROM TCIDADES, TFORNECEDORES
WHERE TFORNECEDORES.CID_ID = TCIDADES.ID

JOIN Resultado

SELECT TFORNECEDORES.DESCRICAO, TCIDADES.CIDADE


FROM TCIDADES, TFORNECEDORES
WHERE TFORNECEDORES.CID_ID = TCIDADES.ID

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

DESCRICAO CIDADE

CRISTIANO DA CRUZ BENTO GONCALVES

EMANUEL DUTRA GARIBALDI

FILIPE DE AZEVEDO BENTO GONCALVES

ERNANI DE AMORIM CAXIAS DO SUL

JOS PERINI CAXIAS DO SUL

MARIA DA SILVA BENTO GONCALVES

Relacionamentos

O relacionamento no FoccoVISION, na maioria dos casos, o seguinte:

TABELA_PAI.ID = TABELA_FILHA.XXX_ID

Onde, XXX representa alguma informao da TABELA PAI.

Exemplo:

Clientes e Estabelecimentos

TABELA PAI: TCLIENTES

TABELA FILHA: TESTABELECIMENTOS

Relacionamento: TCLIENTES.ID = TESTABELECIMENTOS.CLI_ID

6. Recursos das Instrues SELECT SQL


A instruo SELECT recupera informaes do banco de dados. Com uma
instruo SELECT, voc pode fazer o seguinte:

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Projeo: voc pode usar o recurso de projeo da linguagem SQL para


escolher as colunas de uma tabela que devem ser retornadas por uma
consulta. possvel escolher o nmero de colunas que for necessrio da
tabela.

Seleo: voc pode usar o recurso de seleo da linguagem SQL para


escolher as linhas de uma tabela que devem ser retornadas por uma consulta e
pode usar vrios critrios para restringir as linhas exibidas.

Juno: voc pode usar o recurso de juno da linguagem SQL para reunir
dados armazenados em diferentes tabelas, criando um vnculo entre eles. Voc
aprender mais sobre junes em uma lio posterior.

7. Selecionando Todas as Colunas de Todas as Linhas


Voc pode exibir todas as colunas de dados em uma tabela colocando
um asterisco (*) aps a palavra-chave SELECT.

Exemplo: SELECT *

FROM TCLIENTES

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

8. Selecionando Colunas Especficas de Todas as


Linhas
Voc pode usar a instruo SELECT para exibir colunas especficas da tabela
especificando os nomes das colunas, separados por vrgulas.
Na clusula SELECT, especifique as colunas desejadas, na ordem em que
devem aparecer na sada. Por exemplo, para exibir a descrio antes do
cdigo do cliente da esquerda para a direita, use a seguinte instruo:
SELECT DESCRICAO, COD_CLI
FROM TCLIENTES

9. Criando Instrues SQL


As instrues SQL no fazem distino entre maisculas e minsculas.
As instrues SQL podem estar em uma ou mais linhas.
As palavras-chave no podem ser abreviadas ou dividas de uma linha
para outra.
Normalmente, as clusulas so colocadas em linhas separadas.
Os recuos so usados para aperfeioar a legibilidade.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

10. Expresses Aritmticas


Crie expresses com dados numricos e de datas usando operadores
aritmticos.

Operador Descrio

+ Adio

_ Subtrao

* Multiplicao

/ Diviso

11. Usando Parnteses


Voc pode sobrepor as regras de precedncia usando parnteses para
especificar a ordem de execuo dos operadores.
Exemplo SELECT NUM_TIT 10 * (VLR_TIT + 12)
FROM TTIT_CP

Este exemplo ira exibir o numero do titulo do contas a pagar , e o valor


do ttulo do contas a pagar mais 12 vezes 10. Devido aos parnteses, a adio
tem prioridade sobre a multiplicao.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

12. Definindo um Valor Nulo


Nulo um valor que no est disponvel, no atribudo,
desconhecido ou no aplicvel.
Um valor nulo no o mesmo que um zero ou um espao em branco.

13. Valores Nulos nas Expresses Aritmticas


Se qualquer valor da coluna em uma expresso aritmtica for nulo, o
resultado ser nulo. Por exemplo, se voc tentar executar uma diviso
com zero, obter um erro. No entanto, se dividir um nmero por nulo, o
resultado ser nulo ou desconhecido.

14. Operador de Concatenao:


Concatena colunas ou strings de caracteres a outras colunas
representado por duas barras verticais (||)
Cria uma coluna resultante que uma expresso de caracteres
Exemplo de Concatenao:
SELECT COD_CLI || ' - ' || DESCRICAO
FROM TCLIENTES

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

15. Usando a Clusula WHERE


No exemplo, a instruo SELECT recupera todos os cdigos dos
clientes e a descrio dos clientes que possuem o cdigo maior que
100.

SELECT COD_CLI, DESCRICAO


FROM TCLIENTES
WHERE COD_CLI > 100

16. Condies de Comparao


Os operadores de comparao so usados em condies que comparam uma
expresso a outro valor ou expresso e so usados na clusula WHERE.

Operador Significado

BETWEEN Entre dois valores (inclusive)

... AND...

IN (set) Corresponde qualquer valor de uma lista

LIKE Corresponde um padro de caractere

IS NULL um valor nulo

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

17. A Condio BETWEEN


Voc pode exibir linhas baseadas em uma faixa de valores usando a condio
de faixa BETWEEN.
A faixa que voc especificar ter um limite inferior e outro superior.
A instruo SELECT deste exemplo retorna os clientes que possuem o cdigo
entre 100 e 150. Os valores especificados com a condio BETWEEN so
inclusivos. Voc deve especificar primeiro o limite inferior.

SELECT COD_CLI, DESCRICAO


FROM TCLIENTES
WHERE COD_CLI BETWEEN 100 AND 150

18. A Condio IN
Para testar valores em um conjunto de valores especificado, use a condio IN.
A condio IN tambm chamada de condio de associao. A condio IN
pode ser usada com qualquer tipo de dados.

O exemplo exibe os pedidos de venda que esto na posio cancelados e


atendidos e cancelados.

SELECT NUM_PEDIDO, DT_EMIS, DT_ENTREGA, POS_PDV


FROM TPEDIDOS_VENDA
WHERE POS_PDV IN ('C', 'AC')

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Se forem utilizados caracteres ou datas na lista, eles devero ser colocados


entre aspas simples ('').

19. A Condio LIKE


possvel que voc nem sempre saiba o valor exato pelo qual procurar. Voc
pode selecionar linhas que correspondam a um padro de caractere usando a
condio LIKE. A operao de correspondncia de um padro de caractere
chamada de pesquisa curinga. possvel usar dois smbolos para construir a
string de pesquisa.

O exemplo exibe todos os clientes cadastrados no sistema que iniciam com A


letra A.

SELECT *
FROM TCLIENTES
WHERE DESCRICAO LIKE 'A%'

20. As Condies NULL


As condies NULL incluem a condio IS NULL e a condio IS NOT NULL.

A condio IS NULL testa valores que so nulos. Um valor nulo significa que o
valor no est disponvel, no atribudo, desconhecido ou no aplicvel.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Portanto, no possvel testar com = porque um valor nulo no pode ser igual
ou desigual a nenhum valor.

O exemplo exibe todos os clientes que no possuem observaes cadastradas.

SELECT COD_CLI, DESCRICAO, OBS


FROM TCLIENTES
WHERE OBS IS NULL

21. Condies Lgicas


Uma condio lgica combina o resultado de duas condies de componente
para produzir um nico resultado baseado nelas ou inverte o resultado de uma
nica condio. Uma linha s ser retornada se o resultado global da condio
for verdadeiro. Voc pode usar vrias condies em uma clusula WHERE
usando operadores AND e OR.

Operador Significado

AND Retorna TRUE se ambas as condies de


componentes forem verdadeiras.

OR Retorna TRUE se uma as condies de


componentes forem verdadeiras.

NOT Retorna TRUE se a condies seguinte for falsa.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

22. O Operador AND


Todas as pesquisas de caractere fazem distino entre maisculas e
minsculas. Nenhuma linha ser retornada se MAN no estiver em maisculas.
As strings de caracteres devem ser colocadas entre aspas.

O exemplo exibe todos os pedidos de venda restringindo apenas o cdigo do


cliente 1118.

SELECT TCLIENTES.COD_CLI
, TPEDIDOS_VENDA.NUM_PEDIDO
, TPEDIDOS_VENDA.DT_EMIS
FROM TPEDIDOS_VENDA
, TCLIENTES
WHERE TPEDIDOS_VENDA.CLI_ID = TCLIENTES.ID
AND TCLIENTES.COD_CLI = '1118'

23. O Operador OR
O exemplo exibe todos os pedidos de venda do cdigo do cliente 1118 ou do
cdigo do cliente 688.

SELECT TCLIENTES.COD_CLI
, TPEDIDOS_VENDA.NUM_PEDIDO
, TPEDIDOS_VENDA.DT_EMIS
FROM TPEDIDOS_VENDA
, TCLIENTES
WHERE TPEDIDOS_VENDA.CLI_ID = TCLIENTES.ID
AND TCLIENTES.COD_CLI = '1118'
OR TCLIENTES.COD_CLI = '688'

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

24. O Operador NOT


O exemplo exibe todos os clientes que no possuem o cdigo igual a 688 e
1118.

SELECT COD_CLI, DESCRICAO


FROM TCLIENTES
WHERE COD_CLI NOT IN ('1118','688')

Observao: o operador NOT tambm pode ser utilizado com outros


operadores SQL: como BETWEEN, LIKE e NULL.

25. ORDER BY
A clusula ORDER BY ordena os dados e aparece por ltimo na instruo
SELECT.
O exemplo exibe todos os pedidos de venda ordenados pela data de emisso
dos mesmos.
SELECT TCLIENTES.COD_CLI
, TPEDIDOS_VENDA.NUM_PEDIDO

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

, TPEDIDOS_VENDA.DT_EMIS
FROM TPEDIDOS_VENDA
, TCLIENTES
WHERE TPEDIDOS_VENDA.CLI_ID = TCLIENTES.ID
ORDER BY TPEDIDOS_VENDA.DT_EMIS

26. ASC
ordem de classificao default, crescente:

Os valores numricos so exibidos primeiro com os valores mais


baixos. Por exemplo: 1999.

Os valores de datas so exibidos primeiro com os valores mais


antigos por exemplo, 01-JAN-92 antes de 01-JAN-95.

Os valores de caracteres so exibidos em ordem alfabtica. Por


exemplo: o A primeiro e o Z por ltimo.

Os valores nulos so exibidos por ltimo em seqncias


crescentes e primeiro em seqncias decrescentes.

O exemplo exibe todos os pedidos de venda ordenados pela data de emisso


crescente dos mesmos.

SELECT TCLIENTES.COD_CLI
, TPEDIDOS_VENDA.NUM_PEDIDO
, TPEDIDOS_VENDA.DT_EMIS
FROM TPEDIDOS_VENDA
, TCLIENTES
WHERE TPEDIDOS_VENDA.CLI_ID = TCLIENTES.ID
ORDER BY TPEDIDOS_VENDA.DT_EMIS ASC

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

27. DESC
Para reverter a ordem de exibio das linhas, especifique a palavra-chave
DESC aps o nome da coluna na clusula ORDER BY. O exemplo do slide
classifica o resultado pelo funcionrio contratado mais recentemente.

O exemplo exibe todos os pedidos de venda ordenados pela data de emisso


decrescente dos mesmos.

SELECT TCLIENTES.COD_CLI
, TPEDIDOS_VENDA.NUM_PEDIDO
, TPEDIDOS_VENDA.DT_EMIS
FROM TPEDIDOS_VENDA
, TCLIENTES
WHERE TPEDIDOS_VENDA.CLI_ID = TCLIENTES.ID
ORDER BY TPEDIDOS_VENDA.DT_EMIS DESC

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

28. Funes de Manipulao de Maisculas e


Minsculas
LOWER, UPPER e INITCAP so as trs funes de converso de maisculas
e minsculas.

LOWER: converte strings de caracteres com letras


maisculas e minsculas ou s maisculas em letras
minsculas

UPPER: converte strings de caracteres com letras


maisculas e minsculas ou s minsculas em letras
maisculas

INITCAP: converte a primeira letra de cada palavra em


maiscula e mantm as outras letras em minsculas

29. Funes Numricas


As funes numricas aceitam entrada numrica e retornam valores
numricos.

ROUND: arredonda o valor para o decimal especificado

ROUND(45.926, 2) 45.93

TRUNC: trunca o valor para o decimal especificado

TRUNC(45.926, 2) 45.92

MOD: retorna o resto da diviso

MOD(1600, 300) 100

30. Formato de Data Oracle


O banco de dados Oracle armazena datas em um formato de nmero interno,
representando o sculo, o ano, o ms, o dia, as horas, os minutos e os
segundos.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

O formato de entrada e a exibio default para qualquer data DD-MON-RR.


As datas Oracle vlidas esto compreendidas entre 1 de janeiro de 4712 A.C. e
31 de dezembro de 9999 D.C.

Sculo Ano Ms Dia Hora Minuto Segundo

19 94 06 07 05 10 43

Essa data armazenada internamente da seguinte maneira:

Sculos e o Ano 2000


O servidor Oracle compatvel com o ano 2000. Quando um registro com uma
coluna de data inserido em uma tabela, as informaes de sculo so
provenientes da funo SYSDATE. No entanto, quando a coluna de data
exibida na tela, o componente de sculo no exibido por default.

O tipo de dados DATE sempre armazena internamente informaes de ano


como um nmero de quatro dgitos: dois dgitos para o sculo e dois dgitos
para o ano. Por exemplo, o banco de dados Oracle armazena o ano como 1996
ou 2001 e no apenas como 96 ou 01.

31. A Funo SYSDATE


SYSDATE uma funo de data que retorna a data e a hora atuais do servidor
de banco de dados. Voc pode usar SYSDATE da mesma forma que usaria
qualquer outro nome de coluna. Por exemplo, possvel exibir a data atual
selecionando SYSDATE em uma tabela. Normalmente, SYSDATE
selecionada em uma tabela fictcia denominada DUAL.

Exemplo

SELECT SYSDATE
FROM DUAL

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

32. Aritmtica com Datas


J que os bancos de dados armazenam datas como nmeros, voc pode
executar clculos usando operadores aritmticos como adio e subtrao.
possvel adicionar e subtrair constantes de nmero bem como datas.

SELECT TNFS_SAIDA.NUM_NF
, TTIT_CR.PARC
, TTIT_CR.DT_VCTO
, TTIT_CR.VLR_TIT
, (SYSDATE - TTIT_CR.DT_VCTO) DIAS_EM_ATRASO
FROM TTIT_CR
, TNFS_SAIDA
WHERE TTIT_CR.NFS_ID = TNFS_SAIDA.ID
AND TTIT_CR.VLR_PGTO < TTIT_CR.VLR_TIT
AND TTIT_CR.DT_VCTO < SYSDATE
ORDER BY TNFS_SAIDA.ID DESC

Observao: Se uma data mais atual for subtrada de uma data mais antiga, a
diferena ser um nmero negativo.

33. Funes de Data


As funes de data operam nas datas Oracle. Todas as funes de data
retornam um valor de tipo de dados DATE, exceto MONTHS_BETWEEN, que
retorna um valor numrico.

MONTHS_BETWEEN (data1, data2): localiza o nmero de


meses entre data1 e data2. O resultado pode ser positivo
ou negativo. Se data1 for posterior a data2, o resultado
ser positivo; se data1 for anterior a data2, o resultado
ser negativo. A parte no inteira do resultado representa
uma parcela do ms.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

ADD_MONTHS(data, n): adiciona um nmero n de meses


de calendrio data. O valor de n deve ser inteiro e pode
ser negativo.

NEXT_DAY(data, 'caract'): localiza a data do prximo dia


especificado da semana ('caract') aps data. O valor de
caract pode ser um nmero representando um dia ou uma
string de caracteres.

LAST_DAY(data): localiza a data do ltimo dia do ms que


contm a data.

ROUND(data[, 'fmt']): retorna a data arredondada para a


unidade especificada pelo modelo de formato fmt. Se esse
modelo for omitido, a data ser arredondada para o dia
mais prximo.

TRUNC(data[, 'fmt']): retorna a data com a parte do dia


referente hora truncada para a unidade especificada pelo
modelo de formato fmt. Se esse modelo for omitido, a data
ser truncada para o dia mais prximo.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Relacionamento Cadastro de Itens


TITENS
Itens

TITENS.ID =
TITENS_EMPR.ITEM_ID

TITENS_EMPR.ID = TITENS_EMPR
TITENS_SUPRIMENTOS.ITEMPR_ID Itens das empresas TITENS_EMPR.ID =
TITENS_ESTOQUE.ITEMPR_ID

TITENS_SUPRIMENTOS TITENS_ESTOQUE
Pasta Suprimentos dos Itens Pasta Estoque dos Itens

TITENS_SUPRIMENTOS.I TITENS_SUPRIMENTOS.ID =
D = TITENS_NFE.ITES_ID TPEDC_ITEM.ITEM_ID
TITENS_ESTOQUE.ID =
TMOV_ESTQ.ITESTQ_ID

TMOV_ESTQ
TITENS_NFE TPEDC_ITEM Movimentos do Estoque
Itens da Nota Fiscal Itens dos Pedidos de Compra
Eletronica

Itens
Itens
Itens
TITENS_EMPR.ID =
TITENS_COMERCIAL.ITEMPR_ID

TITENS_COMERCIAL
Pasta Comercial dos Itens

TITENS_COMERCIAL.ID = TITENS_COMERCIAL.ID =
TITENS_NFS.ITCM_ID TITENS_PDV.ITCM_ID

TITENS_NFS TITENS_PDV
Itens da Nota Fiscal de Sada Itens do Pedido de Venda

Itens
TNFS_SAIDA.ID = TPEDIDOS_VENDA.ID =
TITENS_NFS.NFS_ID TITENS_PDV.PDV_ID

TNFS_SAIDA TPEDIDOS_VENDA
Nota Fiscal de Sada Pedidos de Venda

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Relacionamento entre Contas a Pagar

TTP_DOC
Tipo de Documento

Itens TTP_DOC.ID =
TTIT_CP.TP_DOC_ID

TEMPRESAS.ID = TTIT_CP.ID =
TTIT_CP.EMPR_ID THIST_MOV_CP.TP_CP_IDTI

TEMPRESAS THIST_MOV_CP
TTIT_CP Histrico de movimentao
Empresas Ttulos de Contas a Pagar do contas a pagar

Itens
TTP_CP.ID =
TTIT_CP.TP_CP_ID
TFORNECEDORES.ID =
TFORNECEDORES TTIT_CP.TFOR_ID
TTP_CP
Fornecedores
Tipos de Contas a Pagar

Relacionamento entre Contas a Receber

TTP_DOC
Tipo de Documento

TTP_DOC.ID =
Itens TTIT_CR.TP_DOC_ID

TEMPRESAS.ID = TTIT_CR.ID =
TTIT_CR.EMPR_ID THIST_MOV_CR.TIT_CR_ID

TEMPRESAS TTIT_CR THIST_MOV_CR


Ttulos de Contas a Histrico de movimentao
Empresas do contas a Receber
Receber

Itens TCLIENTES.ID =
TTIT_CR.CLI_ID

TCLIENTES
Clientes

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Relacionamento entre Movimentos de Estoque

TITENS_EMPR TITENS_ESTOQUE
Itens das empresas TITENS_EMPR.ID =
TITENS_ESTOQUE.ITEMPR_ID Pasta de Estoque do Item

TITENS.ID =
TITENS_EMPR.ITEM_ID TITENS_ESTOQUE.ID =
TMOV_ESTQ.ITESTQ_ID

TITENS TMOV_ESTQ
Itens Movimentao de Estoque

Itens
TALMOXARIFADOS1.ID = TALMOXARIFADOS.ID =
TMOV_ESTQ.ALMOX_ID_ORIG TMOV_ESTQ.ALMOX_ID_DEST

TALMOXARIFADOS1 TALMOXARIFADOS

Almoxarifados Almoxarifados

TTP_MOV_ESTQ.ID =
TMOV_ESTQ.TMVES_ID

TTP_MOV_ESTQ
Tipos de Movimentos de
Estoque

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Relacionamento entre Itens da NFS e Itens do PDV

TMASC_ITEM TCLIENTES
Mscara do Item Clientes
(Configurado)

TMASC_ITEM.ID (+) = TCLIENTES.ID = TNFS_SAIDA.CLI_ID


TITENS_NFS.TMASC_ITEM_ID
Itens
TNFS_SAIDA
Notas Fiscais de Sada

TNFS_SAIDA.ID = TITENS_NFS.NFS_ID

TITENS_COMERCI TITENS_NFS
AL Itens da Nota Fiscal de Sada

Pasta Comercial do Item TITENS_COMERCIAL.ID


= TITENS_NFS.ITCM_ID TITENS_NFS.ID =
THIST_MOV_ITE_PDV.ITNFS_ID
TITENS_EMPR.ID =
Itens
TITENS_COMERCIA.ITEMPR_ID
THIST_MOV_ITE_PD
V
Pedido de Venda
TITENS_EMPR TITENS_PDV.ID =
Itens por Empresa THIST_MOV_ITE_PDV.ITPDV_ID

Itens TITENS_PDV
Itens do Pedido de Venda
TITENS.ID =
TITENS_EMPR.ITEM_ID
TPEDIDOS_VENDA.ID =
TITENS_PDV.PDV_ID
TITENS
Itens TPEDIDOS_VENDA
Pedido de Venda

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Relacionamento entre Pedido de Compra e Nota Fiscal de Entrada

TNFS_ENTRADA TITENS_NFE
Nota Fiscal de Entrada Itens da Nota Fiscal de Entrada
TNFS_ENTRADA.ID=
TITENS_NFE.NFE_ID

Itens TI

THIST_MOV_ITE_PDC.ITNFE_I
D = TITENS_NFE.ID

TPEDC_ITEM THIST_MOV_ITE_PDC
Itens do Pedido de Compra THIST_MOV_ITE_PDC.PEDCITE Histrico de Movimento dos
M_ID = TPEDC_ITEM.ID itens do Pedido de compra

Itens
TPEDC_ITEM.TPEDC_ID =
TPED_COMPRA.ID TITENS_SUPRIMENTOS.ID =
TPEDC_ITEM.ITEM_ID

TPED_COMPRA TITENS_SUPRIMENTOS
Pedidos de Compra Pasta de Suprimentos do Item

Itens
TITENS_EMPR.ID =
TITENS_SUPRIMENTOS.ITEMPR_ID

TITENS_EMPR
Itens das empresas

TITENS.ID = TITENS_EMPR.ITEM_ID

TITENS
Itens

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Relacionamento Planejamento de Itens

TMASC_ITEM.ID = TITENS_PLANEJAMENTO.ID
TORDENS.TMASC_ITEM_ID = TORDENS.ITPL_IDTI

TORDENS TITENS_PLANEJAMENTO
TMASC_ITEM
Ordens Itens do Planejamento
Mascaras dos Itens

Itens
TEMPRESAS.ID =
TORDENS.EMPR_ID

TITENS_EMPR.ID =
TITENS_PLANEJAMENTO.ITEMPR_ID
TEMPRESAS
Empresas
TITENS_EMPR.ID =
TMASC_ITEM.ITEMPR_ID
TEMPRESAS.ID =
TITENS_EMPR.EMPR_ID

TITENS_EMPR
Itens das empresas

TITENS.ID =
TITENS_EMPR.ITEM_ID

TITENS
Itens

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
FoccoVISION
[Digite texto]

DIREITOS AUTORAIS

2011| Focco Sistemas de Gesto | Todos os direitos reservados.

As apostilas de treinamento da Universidade Focco so materiais de


propriedade intelectual e a sua reproduo total ou parcial
terminantemente proibida.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

PR-REQUISITOS DO CURSO

Os participantes deste curso devem ter:

Participado do treinamento de SQL para no desenvolvedores ou ter


noes bsicas de SQL.
Acesso base da empresa via Terminal Services e neste deve ter
acesso ao Internet Explorer e ter permisso para gerar relatrios.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

PBLICO ALVO

Este curso se destina a:

Clientes e demais pessoas interessadas em aprender a elaborar


relatrios atravs da ferramenta FoccoVISION.

Durao Curso: 16 horas.

Notas para o usurio:

Este material de treinamento no um programa de auto-aprendizado.


Cada material complementa as explicaes do instrutor.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

OBJETIVOS DO CURSO

Ao concluir este curso voc estar apto a:

Elaborar relatrios no FoccoVISION conforme a necessidade.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

FoccoVISION

O FoccoVISION um produto que confere autonomia ao cliente para manipular


cdigos PL/SQL diretamente do banco de dados do FoccoERP. Isto significa
que, com esse software complementar, o administrador poder selecionar
tabelas e campos, desenvolvendo seus prprios relatrios e liberando-os no
menu para acesso de todos os usurios do sistema.

1. Localizao no Menu

Na tela principal do FoccoERP Produtos FoccoVISION.


Acesso ao Programa
FoccoVISION Gerador de Informaes.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

2. Tela principal

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Botes de Manuteno:
Novo: F6 Criar um novo registro.
Atualizar: F10 Gravar as informaes/alteraes.
Cancelar: CTRL+Q Abandonar as alteraes
Apagar: CTRL + A Exclui um relatrio.
Sair: CTRL + S Sair do Programa
Botes de Navegao:
Servem para navegar entre os registros disponveis na tela. (Primeiro, Anterior,
Prximo, ltimo).
Boto de Consulta (F7 / F8): Ativa modo de Consulta pelo nome do relatrio.
Lista de Valores (Relatrios): Apresenta uma lista contendo os relatrios
previamente salvos.
Limpa a Tela:
Pr Visualia SQL: Ativa a Tela de restrio (ver na Prxima Pgina).
Cadastro original do campo: a lupa dos cadastros do FoccoERP. No est
em funcionamento no FoccoVISION.
Ajuda do Sistema:
Libera Relatrio no Menu: Libera o relatrio criado para que os usurios
possam acessar. (Veremos adiante neste treinamento sobre como organizar os
relatrios criados no Menu)
Atalhos: Direciona para os programas cadastrados na lista de atalhos
(Cadastro de Atalhos Gerais FUTL0070).

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

3. Abrir a Lista de Relatrios Salvos

Lista de Dados Armazenados (Relatrios): Apresenta uma lista dos


relatrios salvos.
Opo muito utilizada para abrir/editar um relatrio criado anteriormente.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

4. Nomeando um Relatrio/Selecionar as Tabelas -


Pais/Filhas

Descrio: Nome do relatrio.


Quantidade de registros a serem exibidos: Muito utilizado para Rankings,
recurso que filtra o nmero de registros que o relatrio vai apresentar.
(T) Indica que o relatrio ter totais gerais
(R) Indica que o relatrio ter resultado por regras (Opo Desabilitada) - um
recurso da linguagem Oracle, utilizado por tcnicos de TI ou por usurios que
conhecem esse recurso. A utilizao adequada deste recurso pode incrementar
o desempenho da gerao do relatrio.
(Q) Indica que as quebras do relatrio devem ser posicionadas ao lado do
campo detalhe
(D) Indica que no haver dados repetidos.

Selecionando Tabelas

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Restrio de Tabela Usando o caracter coringa (%) possvel localizar


qualquer tabela existente. Exemplo: T%PED% = Localiza todas tabelas cujo
nome inicia com a letra T e possui a palavra PED em qualquer posio.
Lista de Tabelas Apresenta todas as tabelas disponvel no Banco de Dados.
Pginas de Tabelas Disponveis
Tabelas de Contexto Tabelas que foram selecionadas para serem utilizadas
no relatrio.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

5. Selecionando tabelas Pais e Filhas

A partir das tabelas de Contexto, possvel buscar as Tabelas Pais ou as


Tabelas Filhas. As Tabelas Pais so aquelas tabelas que enviam um ID para a
Tabela de Contexto em questo. As Tabelas Filhas so aquelas Tabelas que
recebem o ID da Tabela de Contexto em questo.
DICA: Para buscar as Tabelas Pais ou Tabelas Filhas da Tabela de Contexto,
basta clicar com o Boto DIREITO do mouse sobre a Tabela de Contexto em
Questo e escolher a opo desejada. Conforme exemplo acima. Desta forma
tambm possvel REMOVER uma tabela de contexto ou verificar os
relacionamentos existentes.
Exemplo:
Tabela de Contexto em Questo = TCLIENTES
Tabela Pai = TSEGMERCADOS envia o ID para a coluna SEGMER_ID da
TCLIENTES.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Tabela Filha = TCLI_ALMOX recebe o ID da tabela TCLIENTES na coluna


CLI_ID.
Desta forma, a tabela TCLIENTES tambm filha da TSEGMERCADOS.

6. Trabalhar com Relacionamentos

EX01: Relacionamento TCLIENTES x TSEGMERCADOS

Anlise de Relacionamentos

Aps a escolha/insero da segunda tabela de contexto, o sistema realiza uma


anlise de relacionamento, ou seja, ele valida a ligao relacional que existe
entre as tabelas. necessrio SEMPRE habilitar a relao entre as tabelas.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

EX02: Relacionamento TCLIENTES x TCLI_ALMOX

Anlise de Relacionamentos

Aps a escolha/insero da segunda tabela de contexto, o sistema realiza uma


anlise de relacionamento, ou seja, ele valida a ligao relacional que existe
entre as tabelas. necessrio SEMPRE habilitar a relao entre as tabelas.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

7. Relacionamentos entre tabelas

A seguir explicaremos uma opo de marcao para possibilitar dizer ao


sistema qual(is) tabela(s) permitiro que sejam exibidos campos nulos ou
dados inexistentes na relao entre as tabelas.

Tecnicamente estamos falando de uma opo do SQL chamada OUTER JOIN.


Trata-se de uma Operao JOIN que permite especificar a clusula de juno.
Retorna no relatrio do SELECT as linhas sem correspondncia de uma tabela,
juntando-as com uma linha nula de outra tabela.

Para Habilitar/Desabilitar os relacionamentos, clicar com o boto direito do


MOUSE sobre a Tabela de Contexto Desejada, clicar na Opo
Relacionamentos. Conforme exemplo ACIMA.

No Exemplo Acima o relatrio vai apresentar os campos:

Campos selecionados/escolhidos para aparecer no relatrio (clusula


SELECT).
CODIGO DO CLIENTE (COD_CLI)
DESCRIO DO CLIENTE (CLIENTE)
CDIGO DO ALMOXARIFADO (COD_ALMOX)
DESCRIO DO ALMOXARIFADO (DESCRICAO)
FOCCO SISTEMAS DE GESTO
Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

8. Relacionamento JOIN Normal

1 - Somente clientes que esto ligados a um Almoxarifado Especfico. (JOIN


Normal).
2 - Os Almoxarifados que no esto ligados a nenhum cliente. (OUTER JOIN
1)
3 - Os clientes que no esto ligados a nenhum Almoxarifado. (OUTER JOIN
2)
Neste caso, o relatrio apresenta SOMENTE os clientes que esto ligados a
um Almoxarifado, ou seja, o JOIN do SELECT que apresenta os resultados que
SATISFAZEM s condies especificadas na Clusula WHERE.
Veja acima como fica o SELECT para este tipo de SELEO de dados.
SELECT TCLIENTES.COD_CLI COD_CLI_NUMBER,
TCLIENTES.DESCRICAO CLIENTE_VARCHAR2,
TALMOXARIFADOS.COD_ALMOX COD_ALMOX_VARCHAR2,
TALMOXARIFADOS.DESCRICAO DESCRICAO_VARCHAR2
FROM TCLI_ALMOX TCLI_ALMOX,
TCLIENTES TCLIENTES,
TALMOXARIFADOS TALMOXARIFADOS
WHERE TCLIENTES.ID = TCLI_ALMOX.CLI_ID
AND TALMOXARIFADOS.ID = TCLI_ALMOX.ALMOX_ID
FOCCO SISTEMAS DE GESTO
Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

9. Relacionamento OUTER JOIN 1

Neste caso, o SELECT apresenta os resultados que SATISFAZEM s


condies especificadas na Clusula WHERE, ou seja, clientes ligados a um
Almoxarifado Especfico MAIS os Almoxarifados que no esto ligados a um
Cliente.

Veja acima como fica o SELECT para este tipo de SELEO de dados.

Observar a posio do sinal (+) no SELECT.

SELECT TCLIENTES.COD_CLI COD_CLI_NUMBER,


TCLIENTES.DESCRICAO CLIENTE_VARCHAR2,
TALMOXARIFADOS.COD_ALMOX COD_ALMOX_VARCHAR2,
TALMOXARIFADOS.DESCRICAO DESCRICAO_VARCHAR2
FROM TCLI_ALMOX TCLI_ALMOX,
TCLIENTES TCLIENTES,
TALMOXARIFADOS TALMOXARIFADOS
WHERE TCLIENTES.ID(+) = TCLI_ALMOX.CLI_ID
AND TALMOXARIFADOS.ID = TCLI_ALMOX.ALMOX_ID(+)

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

10. Relacionamento OUTER JOIN 2

Neste caso O SELECT apresenta os resultados que SATISFAZEM s


condies especificadas na Clusula WHERE, ou seja, clientes ligados a um
Almoxarifado Especfico MAIS os Clientes que no esto ligados a um
Almoxarifado.

Veja acima como fica o SELECT para este tipo de SELEO de dados.
Observar o sinal: (+)

Observar a posio do sinal (+) no SELECT.

SELECT TCLIENTES.COD_CLI COD_CLI_NUMBER,


TCLIENTES.DESCRICAO CLIENTE_VARCHAR2,
TALMOXARIFADOS.COD_ALMOX COD_ALMOX_VARCHAR2,
TALMOXARIFADOS.DESCRICAO DESCRICAO_VARCHAR2
FROM TCLI_ALMOX TCLI_ALMOX,
TCLIENTES TCLIENTES,
TALMOXARIFADOS TALMOXARIFADOS
WHERE TCLIENTES.ID = TCLI_ALMOX.CLI_ID(+)
AND TALMOXARIFADOS.ID(+) = TCLI_ALMOX.ALMOX_ID

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

11. Selecionando Campos das Tabelas

Restrio de Coluna Usando o caracter coringa (%) possvel localizar


qualquer nome de coluna existente na tabela. Exemplo: %VLR% = Localiza
todas colunas cujo nome contm a palavra VLR em qualquer posio.

Descrio: a descrio da coluna que ser apresentada no relatrio.


Somente uma coluna ser exibida quando mais que uma possuir descries
iguais.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Ord: a ordenao da coluna. O menor valor faz com que a coluna se


posicione mais a esquerda.

Dado: Especifica o tipo de dado. N = Nmerico, C = Caractere e D = Data.

Tipo: Atualmente so utilizados apenas dois tipos:

Visualizao: Especifica que o campo atual ser exibido no relatrio;

Restrio: No exibe o campo no relatrio, mas deve ser utilizado para


restries, como filtros.

Parmetro: Opo Desativada.

Exemplo Ord:

As informaes do Relatrio gerado sempre aparecem na Pgina 2, pois a


Pgina apresenta apenas os filtros feitos no relatrio.
FOCCO SISTEMAS DE GESTO
Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

12. Configurar e Formatar o Relatrio

Frmula: Os campos podem ser agrupados aplicando as seguintes operaes:

O Percentual s/ Total indica qual percentual que o campo (de acordo com os
agrupamentos utilizados) representa no total de registros do relatrio. As outras
operaes, pelo seu nome, so auto-explicativas.

A opo Agrupamento deve ser aplicada a todos os outros campos que no


sofrero qualquer operao.

Nenhum: diz que o campo no sofrer agrupamento.

P.S. O relatrio deve ter todos os campos como Nenhum ou se algum campo
estiver marcado com alguma operao de agrupamento, todos os outros
campos devem estar marcados como Agrupamento.

Larg: a largura da coluna no relatrio.

R: Restrio usurio final. Indica que o campo atual poder ser utilizado para
coletar informaes do usurio.

T: Totaliza todas as quebras acima.

D: Decodificar de campo. Utilizado para reapresentar dados do banco em


informaes no relatrio. Ex.: Situao do item como Inativo armazenado no
banco como 0.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

D: Decodificar de campo. Utilizado para reapresentar dados do banco em


informaes no relatrio.

Exemplo 01: Situao do item como Inativo armazenado no banco como 0, e


Ativo como 1.

Exemplo 02: A Situao da Nota Fiscal no Banco de Dados armazenado no


campo SIT_NF como G = Gerada, I = Impressa ou C = Cancelada.

13. Campo Fsico, Restries e Tabelas

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Campo Fsico: o nome do campo no banco de dados ou ainda instrues


SQL como concatenao de caracteres (||), operaes matemticas, etc.

Restrio Padro: a Restrio do campo selecionado. Este campo deve ser


preenchido no padro de filtros do Focco3i, ou seja, | para especificar
intervalos, , para separar elementos, etc. Isso tambm exibido no campo da
Tela de Restries como DEFAULT.

Restrio Fixa: uma restrio que ser incorporada ao SQL, o usurio final
no poder alterar e nem visualizar. Em SQL, representa o where.

Tabela Atual: Descrio da tabela selecionada na lista de tabelas.

Tabela Contexto: Descrio da tabela selecionada na lista de tabelas de


contexto.

Tabelas Relacionadas: Exibe os relacionamentos da tabela selecionada na


lista de tabelas de contexto.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

PrVisualizaSQL.

Tela de restrio: Apresenta uma pr-visualizao do SCRIPT SQL que foi


gerado pelo FoccoVISION e que representa as informaes que sero
buscadas no Banco de Dados.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

14. Decompondo a tela Principal Botes

Ordenaes: Especifica a ordenao dos campos;

Detalhes: Permite definir o alinhamento e o formato (mscara) do campo.

Detalhes TXT: Serve para configurar as opes de exportao de arquivo


texto, como smbolo separador dos campos, smbolo separador de milhar,
decimal, etc.

Exporta Relatrio: Gera um arquivo com a extenso (.f3i) contendo o script na


linguagem do Oracle.

Importa Relatrio: Importa um arquivo exportado anteriormente.

Criar Cpia: Todos os relatrios gerados podem ser copiados. O nome da


cpia ser o nome do relatrio atual seguido de (cpia).

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

15. EXPORTAR / IMPORTAR O RELATRIO

Exporta Relatrio: Gera um arquivo com a extenso (.f3i) contendo o script na


linguagem do Oracle.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Importa Relatrio: Importa um arquivo exportado anteriormente.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

16. Criando uma Cpia do Relatrio

Criar Cpia: Todos os relatrios gerados podem ser copiados.

O nome da cpia ser o nome do relatrio atual seguido de (cpia).

Exemplo: Relatrio de Clientes (Cpia)

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

17. DETALHES DO RELATRIO

Boto Detalhes

Detalhes: Permite definir o alinhamento e o formato (Mscara) do campo.

possvel tambm alterar a Fonte, Tamanho, Alinhamento, Cores, Formatos


de Negrito, Itlico, Sublinhado ou Riscado.

O Boto Detalhes apresenta Diferentes opes, conforme o campo que voc


estiver posicionado no momento em que acionar este Boto (Nmero, Texto ou
Data).

Para Campos numricos existem duas Mscaras pr-definidas, uma para


valores no formato de moeda ($) e outra para nmeros com separador de
milhares com duas casas aps a vrgula.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

DICA: Caso seja necessrio usar separador de milhares, porm, sem casas
aps a virgula, basta escolher a mscara FM999G999G990D99 e retirar os
trs ltimos caracteres, deixando assim FM999G999G990.

EXEMPLOS: Nmero 100,3

$FM999G999G990D99 $ 100,30

FM999G999G990D99 100,30

FM999G999G990 100

Para campos de Datas, escolher a mscara que melhor se adapte a


necessidade.

Vale citar que possvel alterar todas as mscaras e compor novas, sempre
respeitando as regras vlidas do SGBD Oracle ou Aplicao.

18. DETALHES TXT / DETALHES JOB

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Detalhes TXT: Serve para configurar as opes de exportao de arquivo


texto, como smbolo separador dos campos, smbolo separador de milhar,
decimal, etc.

Detalhes JOB: Aqui possvel fazer a criao de uma rotina que ser
executada periodicamente conforme parametrizao, e, neste caso serve para
a gerao peridica de relatrio/arquivos texto. O melhor exemplo de aplicao
do JOB a gerao de arquivos texto de dados para importao em Softwares
de BI (Business Inteligence) em um diretrio especfico.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

19. Ordenaes

Ordenaes: Especifica a ordenao dos campos no Relatrio.

Para escolher a ordenao basta escolher os campos e usar as setas para


movimentar os campos do Lado Esquerdo para o Lado Direito da Tela. Nos
campos do Lado Direito da Tela, ao Clicar com o Boto Direito do Mouse,
possvel escolher a Ordenao Ascendente (A-Z) ou Descendente (Z-A).

20. Liberando o Relatrio no Menu

Libera Relatrio no Menu: Libera o relatrio criado no Menu do FoccoERP


para que os usurios possam acessar.
FOCCO SISTEMAS DE GESTO
Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Lembrar de ATUALIZAR (F10) para gravar as informaes aps Liberar o


Relatrio.

21. Visualizando o Relatrio no Menu

LEMBRANDO: Por padro, ao liberar um relatrio, o mesmo ficar armazenado na lista de


relatrios especiais do FoccoVision, dentro da pasta Relatrios Especiais.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

22. Organizando o Menu

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

23. Criando Pastas para Organizar os Relatrios

Dentro do Programa de Cadastro da Estrutura do Menu (FMNU002)

Criando uma PASTA em Relatrio Especiais Passo a Passo.

1 Abrir a Opo FOCCOVISION

2 Clicar com o Boto Direito do Mouse sobre a pasta Relatrios Especiais

3 Clicar em: Inserir novo no...

4 Clicar em: Incio

5 Digitar o Nome da Pasta no Campo Descrio: Ex: Comercial

6 Digitar novamente o Nome da Pasta no Campo Nome: Ex: Comercial

7 No campo Tipo, escolher a Opo: Pastas

8 Atualizar ou F10. (Mensagem: Alteraes Gravadas com Sucesso).

Repetir este mesmo procedimento para as demais pastas que se deseja criar

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

24. Organizando os relatrios nas pastas

Dentro do Programa de Cadastro da Estrutura do Menu (FMNU002)

Organizando os Relatrios nas Pastas criadas anteriormente, Passo a Passo.

1 Abrir a opo FOCCOVISION

2 Abrir a Lista de Relatrios Especiais

3 Clicar com o Boto Direito do Mouse sobre o Relatrio que deseja


Organizar.

4 Clicar em RECORTAR.

5 Clicar com o Boto Direito do Mouse sobre a Pasta onde Deseja colocar o
Relatrio.

6 Clicar em Colar no...

7 Clicar em Incio

8 Atualizar ou F10. (Mensagem: Alteraes Gravadas com Sucesso).

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Repetir este mesmo procedimento para as demais relatrios que deseja


organizar nas pastas.

25. Liberando Acesso ao Relatrio Especial

Para que o usurio possa visualizar e utilizar o relatrio criado, necessrio


dar permisso de acesso atravs do programa: Parametrizao do Sistema
(Uso Restrito) / Cadastro de Permisses de Acesso.

PASSO a PASSO

1 Acessar o Programa de Cadastro de Permisses de Acesso.

2 Seleciona o Usurio ou Grupo para o qual deseja liberar o acesso ao


relatrio.

3 Abre a rvore de acessos at o Relatrio que deseja liberar.

4 Clica com o Boto Direito do Mouse sobre o Relatrio que deseja liberar o
acesso.

5 Clica em Inserir item Nome do Relatrio (Conforme Exemplo acima).

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

Repetir o mesmo procedimento para cada permisso de acesso que deseja


aplicar.

26. Acessando o Relatrio Especial nas Pastas

Para que o usurio possa visualizar e utilizar o relatrio criado, necessrio


dar permisso de acesso atravs do programa: Parametrizao do Sistema
(Uso Restrito) / Cadastro de Permisses de Acesso.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

27. Acessar / Executar o Relatrio

Forma como o Relatrio Especial aparece no Menu do FOCCOVISION.

Relatrios Especiais Comercial RELATRIO DE CLIENTES (Cpia).

Tela dos Filtros e de Execuo do Relatrio.

O usurio pode informar os Filtros de forma manual ou Acessar as listas de


valores de cada campo no boto (?).

possvel executar o relatrio no formato RETRATO ou PAISAGEM.

Para Executar, clicar em REPORTS ou Pressionar F10.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

28. Visualizar o Resultado do Relatrio

LEMBRE-SE:

A pgina 1 do Relatrio apresenta apenas os Filtros.


Os dados do relatrio aparecem sempre a partir da pgina 2.
Conforme Modelo Apresentado Acima.

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
[Digite texto]

29. Outros Formatos do Relatrio

A opo de Relatrio mais usada a opo REPORTS. Dessa forma o


relatrio gerado na tela do usurio e permite uma impresso rpida do
relatrio.

Ainda, possvel gerar os relatrios em:

PDF Arquivo Somente para Leitura (ADOBE ACROBAT READER).

TXT Arquivo TEXTO do Bloco de Notas (NOTEPAD).

XLS Arquivo do Microsoft EXCEL.

RTF Arquivo do Microsoft WORD.

HTML Arquivo do Internet Explorer (PGINA WEB).

FOCCO SISTEMAS DE GESTO


Caxias do Sul-RS 54 3025 9000 | Porto Alegre-RS 51 3091 2900 | So Jos-SC 48 3241 0143 | Jundia-SP 11 3964 0278
www.focco.com.br | focco@focco.com.br
Destinatrios Dinmicos FoccoMAIL
Resumo
O presente trabalho apresenta a ferramenta FoccoMail e a alterao efetuada para
cumprir uma demanda identificada na aplicao em clientes. Essa ferramenta tem por
objetivo gerar mensagens automticas baseadas em dados do sistema FoccoERP, porm
existe uma limitao quanto definio dos destinatrios. Essa limitao foi
solucionada permitindo que os destinatrios sejam definidos a partir da seleo dos
dados que so fonte dos dados enviados nas mensagens.
Palavras-chaves: FoccoMail,e-mail destinatrio, template, relatrio de dados,
configurao de envio .

1. Introduo
A empresa Focco Informatica Ltda 1atua no negcio de sistemas de gesto e disponibiliza
solues na rea de gesto empresarial como o FoccoERP. A partir desse sistema principal, outras
solues abrangem diferentes mdulos tais como, CRM (Customer Relationship Management -
Gesto de Relacionamento com o Cliente), WMS (Warehouse Management System), soluo
comercial Web e geradores de informao.
Para o desenvolvimento dessas solues a empresa dividida nos setores de
desenvolvimento de produto, customizao e consultoria. O setor de consultoria tem por objetivo
mapear os processos dos clientes para garantir melhor aderncia e utilizao do sistema de acordo
com o negcio e setor da empresa. Mediante isso, existem solues que auxiliam a tratar e
disponibilizar para o cliente informaes a nvel gerencial para auditoria e tomada de decises.
O objetivo desse trabalho fazer um diagnstico da ferramenta de envio de mensagens
automticas a partir dos dados do FoccoERP para verificar a necessidade de melhorias. Atravs
desse aspecto, definir as etapas de desenvolvimento da modificao na ferramenta em um
cronograma detalhado de tarefas.
Este artigo est dividido nas seguintes sees: diagnstico onde ser revisada a ferramenta
a ser alterada durante o estgio, identificao do problema que mostra a necessidade apresentada,
objetivos e proposta de soluo que mostra a possvel alterao a ser feita e relatrio de
desenvolvimento onde so apresentados os passos da alterao.

2. DIAGNSTICO
Esta seo apresenta uma viso detalhada da ferramenta FoccoMail, juntamente com os
passos a serem seguidos para configurar o envio automtico das mensagens.

2.1. FOCCOMAIL
Atualmente o sistema FoccoERP possui uma ferramenta de envio automtico de mensagens
chamada FoccoMail. Para a execuo do envio dessas mensagens so necessrios alguns
componentes (Figura 1).

1
Site: www.focco.com.br
Figura 1. Fluxo de atividades para execuo do envio
das mensagens automticas do FoccoMail.

A primeira atividade a criao do relatrio que envolve a seleo de fontes dos dados para
posterior envio das mensagens. Esse relatrio desenvolvido usando o gerador de informaes
mostrado na Figura 2.

Figura 2. Gerador de informaes utilizado para


desenvolvimento do relatrio base para envio das mensagens.

O gerador de informaes tem por objetivo gerar uma instruo SQL (Structured Query
Language) que ser executada em ambiente de banco de dados a fim de retornar os dados a serem
enviados na mensagem. A execuo dessa instruo interpretada e transformada em um arquivo
XML (Extensible Markup Language) cujos atributos so lidos com o intuito de compor os campos
da mensagem.
Para que as mensagens sejam enviadas necessria a interpretao dos dados para o
formato HTML (HyperText Markup Language). A linguagem de programao XSL (EXtensible
Stylesheet Language) utilizada para interpretar o XML e transformar em HTML. Esses comandos
so cadastrados no Cadastro de Templates que exibido na Figura 3.

Figura 3. Cadastro de Templates (cdigos XSL para interpretao dos dados).

A Tabela 1 apresenta um template bsico comentado de um arquivo HTML.

Tabela 1: Template comentada


Tag Descrio
<xsl:stylesheet version="1.0" Incio do template utilizando formato XSL
xmlns:xsl="http://www.w3.org/1999/XSL/
Transform">
<xsl:output method="html" indent="yes"
version="4.0"/>
<xsl:template match="/">
<html> Incio do cdigo html
<body> Incio do corpo do template
<br></br> Espao em branco
Favor analisar e liberar o(s) pedido(s) Texto do e-mail
relacionados abaixo:
<br></br><br></br> Dois espaos em branco
<table border="1"> Incio de tabela com borda tamanho 1
<tr> Incio de linha
<th>Pedido</th> Incio, ttulo e fim da primeira coluna
<th>Emisso</th> Incio, ttulo e fim da segunda coluna
<th align="left">Cliente</th> Incio, ttulo(alinhado a esquerda) e fim da
terceira coluna
</tr> Fim de linha
<xsl:for-each select="ROWSET/ROW"> Incio do loop xsl buscando dados do select
de um relatrio.
Tudo que est dentro desta tag ir repetir a
cada linha do select
<tr> Incio de linha
<td><xsl:value-of select="col2"/></td> Incio e fim da primeira coluna da tabela
Ir buscar o contedo na coluna2 do select
do relatrio
<td><xsl:value-of select="col3"/></td> Incio e fim da segunda coluna da tabela
Ir buscar o contedo na coluna3 do select
do relatrio
<td><xsl:value-of select="col4"/></td> Incio e fim da terceira coluna da tabela
Ir buscar o contedo na coluna4 do select
do relatrio
</tr> Fim de linha
</xsl:for-each> Fim do loop xsl
</table> Fim da tabela
</body> Fim do corpo template
</html> Fim do cdigo html
</xsl:template> Fim do template utilizando formato xsl
</xsl:stylesheet>

As linhas em negrito da Tabela 1 mostram como so interpretadas as colunas do XML


gerado pela execuo da instruo SQL do relatrio de dados criado no gerador de informaes.
O Cadastro de Configuraes (Figura 5) utilizado para efetuar a ligao dos dados com o
template de interpretao e para definir o procedimento de envio das mensagens automticas.
Figura 4: Cadastro de Configuraes

O Cadastro de Configuraes possui os seguintes itens a serem cadastros:


1. Nome da configurao: Chave primria do cadastro que no pode ser modificada aps a
criao;
2. Incio dos envios: data e hora que ser utilizada como referencia para a frequncia de envio
posterior;
3. Frequncia de envio das mensagens: Escolha entre as opes e definio do intervalo;
4. Relatrio que ser utilizado para extrair as informaes: Relatrio dos dados criado no gerador
de informaes;
5. Remetente da mensagem (necessrio um usurio com e-mail vlido);
6. Destinatrios usurios cadastrados no ERP: quando o envio for interno utilizada a ferramenta
onde os usurios F3iMail recebem as mensagens dentro do FoccoERP;
7. Destinatrios endereos de e-mail externos: quando o envio externo os destinatrios recebem
as mensagens em seus endereos de e-mail digitados nesse campo;
8. Assunto do e-mail;
9. Template a ser utilizada: cdigo XSL cadastrado no cadastro de template;
10. Programa para o qual o usurio ser direcionado atravs do sistema interno de mensagens do
ERP;
11. Perodo de histrico a ser mantido: dias que o histrico de mensagens ser mantido para envio
de apenas dados novos.

3. IDENTIFICAO DO PROBLEMA
Na situao atual da ferramenta, a definio dos destinatrios de e-mail feita no cadastro
de configuraes conforme apresentado anteriormente. Essa definio fixa para cada
configurao, no sendo possvel definir os envios conforme regras baseadas nos dados gerados.
Um exemplo caracterstico o acompanhamento de vendas para representantes da empresa.
Necessidade de envio mensal da gesto de vendas de cada representante juntamente com a
expectativa da empresa para com o mesmo. Da forma como o sistema est estruturado hoje a
soluo para essa necessidade composta pelos itens:

Dados: Relatrio de vendas mensais que traz o desempenho de vendas do representante,


bem como suas metas e realizaes. Para que seja possvel o envio para o representante especifico
foi includo um filtro com o cdigo do representante para o qual esse relatrio ser enviado. Dessa
forma, na definio da configurao de envio da mensagem com esse relatrio juntamente com o
endereo de e-mail do representante sero enviadas apenas as informaes referentes ao mesmo.
Na figura 6 mostrado o filtro necessrio para envio para apenas um representante.

Figura 6: Relatrio de Acompanhamento de Metas por Representante.

Template: Cadastrada para interpretao dos dados para HTML conforme mostra a Figura
7.
Figura 7: Template cadastrada para interpretao dos dados
do relatrio de acompanhamento de metas.

Configuraes: Cadastro que liga os pontos anteriores e as definies de envio das mensagens.
Nesse ponto so definidos os destinatrios de forma fixa. A Figura 8 mostra um exemplo deste
cadastro.

Figura 8: Cadastro de configuraes do acompanhamento


das metas para o representante 360.
Emails: Porm nesse formato necessrio existir um relatrio e uma configurao para cada
representante. Dessa forma possvel determinar o endereo de e-mail daquele representante
pra envio mensal do seu respectivo relatrio de acompanhamento de vendas.
Na figura 9 mostrado o e-mail externo do representante 360 sendo informado
manualmente na configurao.

Figura 9: Endereos de e-mail dos destinatrios da mensagem.

Em um cenrio onde a quantidade de representantes existentes maior que 100 e, existe a


possibilidade da incluso de novos representantes com frequncia, a utilizao da ferramenta fica
limitada ao conhecimento tcnico necessrio para replicar o conjunto para um novo representante.

4. Objetivos e Proposta de Soluo

O objetivo do trabalho implementar um adendo a ferramenta para que seja possvel


determinar no relatrio de dados quais os destinatrios a serem enviados.
Os benefcios esperados para a empresa so a possibilidade de ampliar a utilizao da
ferramenta com mais opes de utilizao em projetos e oportunidades que j surgiram e no
puderam ser finalizadas em funo da restrio existente.
Para atender aos objetivos, a proposta soluo est baseada em modificar as rotinas de
interpretao do SQL gerado pelo relatrio e interpretado atravs da template cadastrada.
A proposta de soluo contempla as atividades de levantamento e definies das alteraes
necessrias s rotinas de interpretao dos dados do relatrio de origem, execuo dessas
alteraes, testes internos e teste nos clientes que levantaram a necessidade.

5. Relatrio de Desenvolvimento da Proposta

O desenvolvimento da soluo iniciou-se por conhecer os cadastros que poderiam trazer a


informao do e-mail do destinatrio vinculado aos dados j existentes nos relatrios de dados
criados a partir do Gerador de Informaes.
Esse desenvolvimento foi feito em uma base de dados de teste interna da empresa para
evitar prejudicar o funcionamento da aplicao nos clientes. Existe uma restrio nessa aplicao
que no permite o envio das mensagens quando em base de testes. A soluo foi baseada na
necessidade de envio de uma listagem de pedidos de venda para seus respectivos representantes.
Para isso sero utilizados os cadastros de contatos existentes no ERP onde so informados os
endereos de e-mail de cada cliente, representante, fornecedor, etc.
Como pode ser visto da figura 10, o cadastro de representantes possui uma aba onde pode
ser informado o e-mail do representante.

Figura10: Cadastro de e-mails dos representantes.

No relatrio de dados sero includas as tabelas onde se encontram esses dados, de forma
que exista uma coluna na instruo SQL gerada que traga os endereos de e-mail para os quais a
informao daquele registro deve ser enviada. Na figura 11 mostrada a utilizao da tabela
TEMAIL_REP que o repositrio das informaes de contatos de e-mails dos representantes.
Figura 11: Gerador de informaes:relatrio utilizando a tabela TEMAIL_REP.

Importante ressaltar que por questes de execuo o campo e-mail deve obrigatoriamente
ser a coluna dois do relatrio. A rotina de envio das mensagens utiliza a segunda coluna do relatrio
para efetuar o envio diferenciado para cada representante com suas informaes. Essa coluna o
filtro do contedo do relatrio para enviar apenas as informaes do representante em questo.
Diferentemente do relatrio citado na identificao do problema, aps a alterao no ser
necessrio filtrar o representante pelo seu cdigo, apenas que o mesmo tenha um endereo de e-
mail vlido cadastrado na pasta de contatos.
Foi efetuada uma alterao no cadastro de configuraes para que seja possvel identificar
quais as configuraes que utilizaro gerao dinmica de destinatrios de e-mail. Conforme pode
ser visto na figura 12 possvel marcar um indicador para que o tratamento feito para garantir que
exista a informao do e-mail do destinatrio atravs dos campos usurio ou e-mail, existente em
tela seja desconsiderado, j que o destinatrio ser gerado atravs de uma coluna no relatrio de
dados criado no Gerador de Informaes. Nesse contexto o usurio informado sobre a
necessidade de o campo e-mail ser a coluna dois do relatrio, como mostrado na Figura 12.
Figura 12: Cadastro de configuraes com novo campo Destinatrios Dinmicos. Mensagem
mostrada para alertar sobre a restrio nos dados.

No desenvolvimento da atividade de alterao do cadastro de configuraes foi necessrio


alterar a tabela de configuraes (TCONFIG_MAIL) para acrescentar o campo
DEST_DINAMICO que ser utilizado nas rotinas de gerao das mensagens para identificao da
necessidade do tratamento diferenciado no momento da busca dos dados para envio das mensagens.
As configuraes que tiverem esse indicador marcado no precisaro ter o usurio ou o e-mail do
destinatrio informado.
A rotina de envio das mensagens automticas foi alterada para tratar a seleo dos dados do
relatrio de acordo com os endereos de e-mail especficos de cada representante. Porm, com o
intuito de no prejudicar o processamento da utilizao da rotina em outras aplicaes, foi includo
um teste para utilizar o tratamento de destinatrios dinmicos apenas quando o campo referente a
isso estiver marcado.
A chamada da funo existente no programa do cadastro de configuraes continua a
mesma (Figura 13), utilizada a package de banco FOCCOMAIL onde a funo alterada est
inserida.
Figura 13: Chamada da funo de tratamento das mensagens automticas
no programa FMAI0200, cadastro de configuraes.

Figura 14: Rotina padro de envio.

Conforme pode ser visto na Figura 14, foi includo um teste do indicador de destinatrios
dinmicos para desviar o processamento original para que seja efetuado o tratamento dos dados de
acordo com o e-mail de cada representante. A nova rotina que efetua esse tratamento pode ser vista
a seguir.
--COLUNA 2 TEM OS E-MAILS DOS DESTINATARIOS
v_select_dest := 'SELECT DISTINCT "col2"
FROM ('||v_select_gi||')
WHERE "col1" NOT IN (SELECT chave
FROM thist_mail
WHERE tconf_mail_id =
'||pi_config_email_id||')';

OPEN cur FOR v_select_dest;


LOOP
FETCH cur INTO v_email_dest;
EXIT WHEN cur%NOTFOUND;

BEGIN
-- monta o select para que pegue apenas os registros q no foram enviados
-- SELECIONA APENAS OS DADOS REFERENTES AO ENDEREO DE E-MAIL DO REGISTRO
DO CURSOR CORRENTE

v_select := 'SELECT *
FROM ('||v_select_gi||')
WHERE "col2" = '''||v_email_dest||'''
AND "col1" NOT IN (SELECT chave
FROM thist_mail
WHERE tconf_mail_id =
'||pi_config_email_id||')';

--CDIGO DE INTERPRETAO DOS DADOS PARA HTML

--CDIGO PARA ENVIO DAS MENSAGENS DE ACORDO COM A CONFIGURAO

END;

END LOOP;
CLOSE cur;

Figura 15: Parte do cdigo da rotina FMAIL_ENVIA_EMAIL_DINAMICO.

O cdigo da rotina de interpretao e envio das mensagens foi unido em uma nica funo,
pois necessrio que esse processo se repita para cada endereo de e-mail identificado de acordo
com a coluna 2 do relatrio de dados. Na figura 15 est demonstrada a parte do cdigo que efetua
esse tratamento utilizando um cursor para executar a interpretao, seleo e envio das mensagens
tantas vezes quantos forem os endereos de e-mail distintos no relatrio.
Os resultados obtidos no desenvolvimento da proposta foram as mensagens de e-mail
separadas para cada um dos representantes (figura 16 e figura 17). Como pode ser visto a seguir, o
relatrio lista todos os pedidos de venda dentro de um perodo definido e atravs do campo de e-
mail associado foi possvel separar essa informao e enviar ao e-mail associado apenas os pedidos
de venda referentes ao representante citado na mensagem.
Figura 16: Mensagem gerada a partir do relatrio de dados de pedidos de venda com apenas
os pedidos do representante LOJA D&D.

Figura 17: Mensagem gerada a partir do relatrio de dados de pedidos de venda com apenas
os pedidos do representante ORNARE IND E COM DE MOVEIS.

As mensagens foram geradas automaticamente a partir da mesma configurao, template e


relatrio de dados. Cada uma com o seu e-mail destinatrio conforme cadastro de representantes.

6. Concluses
Nesta seo o autor deve fazer uma avaliao da proposta de estgio, com base no relatrio
e nos resultados obtidos. Para a avaliao final o autor deve fazer uma anlise crtica sobre o
diagnstico, a soluo e as referncias bibliogrficas que a fundamentaram, com vistas a expor a
sua contribuio organizao e ao assunto abordado. Tambm poder propor sugestes de outros
encaminhamentos ou melhorias soluo desenvolvida.
Os resultados permitem avaliar que a necessidade identificada em alguns clientes de poder
definir dinamicamente os destinatrios das mensagens automticas geradas atravs da ferramenta
FoccoMail so de muita utilidade. A alterao proposta foi testada em bases internas e em clientes e
atravs da mesma foi possvel aumentar a abrangncia da utilizao da ferramenta.
Neste estudo pode-se verificar que alm da possibilidade de definir dinamicamente os
destinatrios, seria necessrio definir uma hierarquia para envio das mensagens com perodos
diferentes para cada destinatrio.
Na continuidade do trabalho ser avaliada essa nova alterao com o levantamento dos
reais requisitos, definio da alterao e analise de custos da mesma.

7. Referncias
LORENTZ, Diana, GREGOIRE, Joan Oracle Database SQL Reference 10g Release 1. Oracle
Corporation, 2003.

Anexo A

Cdigo da rotina criada para tratar os destinatrios dinmicos.

PROCEDURE FMAIL_ENVIA_EMAIL_DINAMICO
( pi_config_email_id tconfig_mail.id%TYPE
, pi_empr_id tempresas.id%TYPE) IS

--DESTINATARIOS DINAMICOS
v_email_dest VARCHAR2(32767);

--MONTAGEM DO TEXTO
v_select VARCHAR2(32767);
v_select_dest VARCHAR2(32767);
v_select_gi v_select%TYPE;
v_cab_id tcab_dinamico.id%TYPE;
v_template ttemplate.texto%TYPE;
v_ctxh DBMS_XMLGEN.CTXHANDLE;
v_queryresult XMLTYPE;
v_xsl_trans XMLTYPE;
v_cursor INTEGER;
v_campo_unique VARCHAR2(200);
v_status INTEGER;
v_clob CLOB;

TYPE cur_typ IS REF CURSOR;


cur cur_typ;

--ENVIO
v_corpo_email CLOB;
v_assunto tconfig_mail.assunto%TYPE;
v_usuarios tconfig_mail.usuarios%TYPE;
v_email tconfig_mail.email%TYPE;
v_prog_desvio tconfig_mail.programa%TYPE;
v_aux NUMBER;
v_ids_usuarios VARCHAR2(32000);
v_smtp VARCHAR2(4000);
v_erro VARCHAR2(8000);
v_erro_externo BOOLEAN := FALSE;
v_erro_interno BOOLEAN := FALSE;

v_login tusuarios.login%type; --Solic.135665


BEGIN

--para limpar a wg
DELETE wg_hist_mail;
SELECT mail.cab_din_id
, tem.texto
INTO v_cab_id
, v_template
FROM tconfig_mail mail
,ttemplate tem
WHERE mail.id = pi_config_email_id
AND tem.id = mail.ttemplate_id;

-- guarda os valores das colunas no type


v_select_gi := FOCCO3I_F3IGI.MONTA_RELACIONAMENTOS(v_cab_id,NULL,TRUE);

--COLUNA 2 TEM OS E-MAILS DOS DESTINATARIOS


v_select_dest := 'SELECT DISTINCT "col2"
FROM ('||v_select_gi||')
WHERE "col1" NOT IN (SELECT chave
FROM thist_mail
WHERE tconf_mail_id =
'||pi_config_email_id||')';

OPEN cur FOR v_select_dest;


LOOP
FETCH cur INTO v_email_dest;
EXIT WHEN cur%NOTFOUND;

BEGIN
-- monta o select para que pegue apenas os registros q no
foram enviados
v_select := 'SELECT *
FROM ('||v_select_gi||')
WHERE "col2" = '''||v_email_dest||'''
AND "col1" NOT IN (SELECT chave
FROM thist_mail
WHERE tconf_mail_id =
'||pi_config_email_id||')';

-- caso a rotina esteja sendo executada pelo JOB entao guarda


os valores
-- unicos na WG para que possa guardar na tabela de histori-
cos
v_cursor := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_cursor,v_select,0);
DBMS_SQL.DEFINE_COLUMN(v_cursor, 01, v_campo_unique,200);
v_status := DBMS_SQL.EXECUTE(v_cursor);
WHILE DBMS_SQL.FETCH_ROWS(v_cursor) > 0 LOOP
DBMS_SQL.COLUMN_VALUE(v_cursor, 01, v_campo_unique);
INSERT INTO wg_hist_mail (chave)
VALUES (v_campo_unique);
END LOOP;

-- monta o arquivo HTML a partir do XSL cadastrada na templa-


te
BEGIN
v_ctxh := DBMS_XMLGEN.NEWCONTEXT (v_select);
DBMS_XMLGEN.SETCONVERTSPECIALCHARS(v_ctxh,TRUE);
v_xsl_trans := NEW XMLTYPE(v_template);

v_queryresult :=
DBMS_XMLGEN.GETXMLTYPE(v_ctxh).transform(v_xsl_trans);

v_clob := v_queryresult.GETCLOBVAL();

-- substitui os caracteres especiais


FOR i IN 128..255 LOOP
v_clob := REPLACE(v_clob,CHR(i),'&#'||i||';');
END LOOP;

EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END;

BEGIN
v_smtp := FOCCO3I_EMAIL.RETORNASMTPSERVER(pi_empr_id);

v_corpo_email := v_clob;

IF v_corpo_email IS NOT NULL THEN


SELECT conf.assunto
, REPLACE(conf.usuarios,' ','')
, conf.programa
, usr.login
INTO v_assunto
, v_usuarios
, v_prog_desvio
, v_login
FROM tconfig_mail conf
, tusuarios usr
WHERE conf.usu_id = usr.id (+)
AND conf.id = pi_config_email_id;

-- envia emails internos


IF v_usuarios IS NOT NULL THEN
BEGIN
-- troca o intervalo de usuarios (login) pelo inter-
valo de ids
v_ids_usuarios := FOC-
CO3I_UTIL.RETORNA_SELECT_DINAMICO('SELECT wm_concat(id)

FROM tusuarios

WHERE '||FOCCO3I_UTIL.INTERVALO('LOGIN',v_usuarios, 'A'));

v_aux := FOC-
CO3I_MAIL.ENVIA_MENSAGEM_CHAR_CLOB(v_assunto, v_corpo_email, NULL, 1,
'N', 1, NULL, v_ids_usuarios,v_prog_desvio,1);
EXCEPTION
WHEN OTHERS THEN
v_erro_interno := TRUE;
v_erro := v_erro||'Erro ao enviar emails inter-
nos:
'||DBMS_UTILITY.FORMAT_ERROR_STACK||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
END;
END IF;

v_email := v_email_dest;
-- envia emails externos
IF v_email IS NOT NULL THEN
DECLARE
v_anexos FOCCO3I_EMAIL.ANEXOSTB;
BEGIN

FOCCO3I_EMAIL.ENVIAEMAIL(nvl(focco3i_email.retornaemail(v_login),'foccoma
il@focco.com.br')
,REPLACE(v_email,',',';')
,NULL

,focco3i_email.retornausuario(v_login)

,focco3i_email.retornasenhaemail(v_login)
,v_smtp
,v_assunto
,v_corpo_email
,FALSE
,v_anexos);
EXCEPTION
WHEN OTHERS THEN
v_erro_externo := TRUE;
v_erro := v_erro||'Erro ao enviar emails exter-
nos:
'||DBMS_UTILITY.FORMAT_ERROR_STACK||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
END;
END IF;

IF NOT v_erro_externo OR
NOT v_erro_interno THEN
FOR i IN (SELECT chave
FROM wg_hist_mail)LOOP
BEGIN
INSERT INTO thist_mail(id
, chave
, dt_envio
, tconf_mail_id)
VALUES (seq_id_thist_mail.NEXTVAL
, i.chave
, SYSDATE
, pi_config_email_id);
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END LOOP;
END IF;

COMMIT;

IF v_erro IS NOT NULL THEN


RAISE_APPLICATION_ERROR(-20001,v_erro);
END IF;
END IF;
END;

END LOOP;
CLOSE cur;
END;