Você está na página 1de 9

CREATE OR REPLACE FUNCTION convert_utf8 (pstring VARCHAR2)

RETURN VARCHAR2
IS
chsorigem VARCHAR2 (30) := 'WE8ISO8859P1';
chsdestino VARCHAR2 (30) := 'US7ASCII';
BEGIN
SELECT VALUE
INTO chsorigem
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';

RETURN CONVERT (CONVERT (pstring, chsdestino, chsorigem),


'UTF8',
chsdestino);
END;
/

CREATE OR REPLACE FUNCTION validar_campo (p_string IN VARCHAR2)


RETURN INT
IS
v_new_num NUMBER;
BEGIN
v_new_num := TO_NUMBER(p_string);
RETURN 1;
EXCEPTION
WHEN VALUE_ERROR THEN
RETURN 0;
END validar_campo;
/

CREATE OR REPLACE FORCE VIEW PROIV_PONTOVENDA (CODIGO, RAZAO_SOCIAL, NOME_FANTASIA,


LOGRADOURO, BAIRRO, TELEFONE, MUNICIPIO, ESTADO, CEP, CPFCNPJ, LATITUDE, LONGITUDE,
DATA_EXCLUSAO, DATA_ULTIMA_COMPRA, CODIGO_RAMO_ATIVIDADE,
CODIGO_PONTO_VENDA_PRINCIPAL, CODIGO_REDE, CODIGO_REGIAO, CELULAR, EMAIL,
OBSERVACAO, NUMERO_ENDERECO, DATA_ALTERACAO) AS
SELECT CLI.CODCLI
, convert_utf8(NVL(CLI.CLIENTE, ''))
, convert_utf8(NVL(CLI.FANTASIA, ''))
, convert_utf8(NVL(CLI.ENDERENT,''))
, convert_utf8(NVL(CLI.BAIRROENT,''))
, convert_utf8(NVL(CLI.TELENT,''))
, convert_utf8(NVL(CID.NOMECIDADE,''))
, convert_utf8(NVL(CLI.ESTENT,''))
, convert_utf8(NVL(CLI.CEPENT,''))
, convert_utf8(NVL(CLI.CGCENT,''))
, convert_utf8(NVL(CLI.LATITUDE,0))
, convert_utf8(NVL(CLI.LONGITUDE,0))
, convert_utf8(NVL(to_char(CLI.DTEXCLUSAO, 'yyyy-mm-dd hh:mm:ss'),''))
, convert_utf8(NVL(to_char(CLI.DTULTCOMP, 'yyyy-mm-dd hh:mm:ss'),''))
, CLI.CODATV1
, case when CLI.CODCLI = CLI.CODCLIPRINC or CLI.CODCLIPRINC = 0 or
CLI.CODCLIPRINC is null then null else CLI.CODCLIPRINC end
, CLI.CODREDE
, CLI.NUMREGIAOCLI
, convert_utf8(NVL(CLI.TELCELENT,''))
, convert_utf8(NVL(CLI.EMAIL,''))
, case when CLI.OBSERVACAO is not null and CLI.OBS_ADIC is not null
then convert_utf8(CLI.OBSERVACAO) || ' ' || (CASE WHEN LENGTH (OBS_ADIC)<2000 then
convert_utf8(CLI.OBS_ADIC) else NULL END)
when CLI.OBSERVACAO is not null then convert_utf8(CLI.OBSERVACAO)
when CLI.OBS_ADIC is not null then convert_utf8(CLI.OBS_ADIC)
else null end
, convert_utf8(NVL(CLI.NUMEROENT,''))
,CLI.DTULTALTER
FROM PCCLIENT CLI
INNER JOIN PCCIDADE CID ON CID.CODCIDADE = CLI.CODCIDADE
AND CLI.BLOQUEIODEFINITIVO <> 'S';
/

CREATE OR REPLACE FORCE VIEW PROIV_USUARIO (CODIGO, NOME, EMAIL, BLOQUEADO,


INATIVO, CODIGO_SUPERIOR, PERFIL, LOGRADOURO, BAIRRO, MUNICIPIO, ESTADO, CEP,
LATITUDE, LONGITUDE, CPF, TELEFONE1, TELEFONE2, DATA_ALTERACAO) AS
SELECT CODGERENTE,
NOMEGERENTE,
convert_utf8 (NVL (EMAIL, '')) AS EMAIL,
'' AS BLOQUEADO,
'' AS INATIVO,
'' AS CODIGO_SUPERIOR,
'GER' AS PERFIL,
'' AS LOGRADOURO,
'' AS BAIRRO,
'' AS MUNICIPIO,
'' AS ESTADO,
'' AS CEP,
'' AS LATITUDE,
'' AS LONGITUDE,
'' AS CPF,
'' AS TELEFONE1,
'' AS TELEFONE2,
SYSDATE AS DTULTALTERACAO
FROM PCGERENTE
UNION ALL
-- SUPERVISOR
SELECT CODSUPERVISOR,
NOME,
convert_utf8 (NVL (EMAIL, '')) AS EMAIL,
'' AS BLOQUEADO,
POSICAO AS INATIVO,
TO_CHAR (CODGERENTE) AS CODIGO_SUPERIOR,
'SUP' AS PERFIL,
'' AS LOGRADOURO,
'' AS BAIRRO,
'' AS MUNICIPIO,
'' AS ESTADO,
'' AS CEP,
'' AS LATITUDE,
'' AS LONGITUDE,
CPF,
'' AS TELEFONE1,
'' AS TELEFONE2,
SYSDATE AS DTULTALTERACAO
FROM PCSUPERV
-- WHERE POSICAO = 'A'
UNION ALL
-- PROMOTOR
SELECT CODUSUR,
NOME,
convert_utf8 (NVL (EMAIL, '')) as EMAIL,
BLOQUEIO,
CASE WHEN DTEXCLUSAO IS NULL THEN 'A' ELSE 'I' END AS INATIVO,
TO_CHAR (CODSUPERVISOR),
'PRO' AS PERFIL,
convert_utf8 (NVL (ENDERECO, '')) AS LOGRADOURO,
convert_utf8 (NVL (BAIRRO, '')) AS BAIRRO,
convert_utf8 (NVL (CIDADE, '')) AS MUNICIPIO,
convert_utf8 (NVL (ESTADO, '')) AS ESTADO,
convert_utf8 (NVL (CEP, '')) AS CEP,
convert_utf8 (NVL (LATITUDE, '')) AS LATITUDE,
convert_utf8 (NVL (LONGITUDE, '')) AS LONGITUDE,
CPF,
TELEFONE1 AS TELEFONE1,
TELEFONE2 AS TELEFONE2,
DTULTALTERACAO
FROM PCUSUARI
WHERE TIPOVEND = 'P'
-- AND DTEXCLUSAO IS NULL AND BLOQUEIO = 'N'
UNION ALL
-- VENDEDOR
SELECT CODUSUR,
NOME,
convert_utf8 (NVL (EMAIL, '')) as EMAIL,
BLOQUEIO,
CASE WHEN DTEXCLUSAO IS NULL THEN 'A' ELSE 'I' END AS INATIVO,
TO_CHAR (CODSUPERVISOR),
'VEN' AS PERFIL,
convert_utf8 (NVL (ENDERECO, '')) AS LOGRADOURO,
convert_utf8 (NVL (BAIRRO, '')) AS BAIRRO,
convert_utf8 (NVL (CIDADE, '')) AS MUNICIPIO,
convert_utf8 (NVL (ESTADO, '')) AS ESTADO,
convert_utf8 (NVL (CEP, '')) AS CEP,
convert_utf8 (NVL (LATITUDE, '')) AS LATITUDE,
convert_utf8 (NVL (LONGITUDE, '')) AS LONGITUDE,
CPF,
TELEFONE1 AS TELEFONE1,
TELEFONE2 AS TELEFONE2,
DTULTALTERACAO
FROM PCUSUARI
WHERE TIPOVEND NOT IN ('P') ;
--AND DTEXCLUSAO IS NULL AND BLOQUEIO = 'N';
/

CREATE OR REPLACE VIEW PROIV_EMPRESA


(codigo,nome,logradouro,bairro,telefone,municipio,estado,cep,cpfcnpj,numero)
AS
Select CODIGO,RAZAOSOCIAL,ENDERECO,BAIRRO,TELEFONE,CIDADE,UF,CEP,CGC,NUMERO
from PCFILIAL;
/
CREATE OR REPLACE FORCE VIEW PROIV_EMPRESA_USUARIO (CODIGO_EMPRESA, CODIGO_USUARIO,
PERFIL, DATA_ALTERACAO) AS
SELECT CODFILIAL
, CODUSUR
, 'PRO' AS PERFIL
, DTULTALTERACAO
FROM PCUSUARI
WHERE CODFILIAL IS NOT NULL
AND CODUSUR IS NOT NULL
AND TIPOVEND = 'P'

UNION ALL

-- VENDEDOR
SELECT CODFILIAL
, CODUSUR
, 'VEN' AS PERFIL
, DTULTALTERACAO
FROM PCUSUARI
WHERE CODFILIAL IS NOT NULL
AND CODUSUR IS NOT NULL
AND TIPOVEND NOT IN ('P') ;
/

CREATE OR REPLACE FORCE VIEW PROIV_MIX(CODIGO_CLIENTE,CODIGO_PRODUTO,DATA)


AS
SELECT
pedi.CODCLI,
pedi.CODPROD,
pedi.DATA
FROM PCPEDI pedi
LEFT JOIN PCPEDC pedc ON pedc.NUMPED = pedi.NUMPED AND pedc.CODCLI = pedi.CODCLI
WHERE pedc.CODEMITENTE = '8888'; --somente forca de vendas
/

CREATE OR REPLACE VIEW PROIV_ROTA (codigo_usuario, codigo_pontovenda, sequencia,


periodicidade, data_proxima_visita, data_inicio, data_fim, numero_semana,
dia_semana, perfil)
AS
SELECT rota.CODUSUR
, CODCLI
, SEQUENCIA
, PERIODICIDADE
, DTPROXVISITA
, rota.DTINICIO
, DTFINAL
, NUMSEMANA
, DIASEMANA
, CASE usuario.TIPOVEND
WHEN 'P' THEN 'PRO'
ELSE 'VEN'
END AS PERFIL
FROM PCROTACLI rota
JOIN PCUSUARI usuario ON rota.CODUSUR = usuario.CODUSUR
WHERE periodicidade IS NOT NULL;
/

CREATE OR REPLACE FORCE VIEW PROIV_PONTOVENDA_USUARIO (CODIGO_PONTOVENDA,


CODIGO_USUARIO, PERFIL, DATA_ALTERACAO) AS
SELECT codcli as COD_CLIENTE
, codusur1 as COD_USUARIO
, CASE usuario.TIPOVEND
WHEN 'P' THEN 'PRO'
ELSE 'VEN'
END AS PERFIL
, nvl(DTULTALTER, sysdate)
FROM PCCLIENT client
INNER JOIN PCUSUARI usuario ON codusur1 = usuario.codusur

UNION ALL

SELECT codcli as COD_CLIENTE


, codusur2 as COD_USUARIO
, CASE usuario.TIPOVEND
WHEN 'P' THEN 'PRO'
ELSE 'VEN'
END AS PERFIL
, nvl(DTULTALTER, sysdate)
FROM PCCLIENT client
INNER JOIN PCUSUARI usuario ON codusur2 = usuario.codusur

UNION ALL

SELECT codcli as COD_CLIENTE


, codusur3 as COD_USUARIO
, CASE usuario.TIPOVEND
WHEN 'P' THEN 'PRO'
ELSE 'VEN'
END AS PERFIL
, nvl(DTULTALTER, sysdate)
FROM PCCLIENT client
INNER JOIN PCUSUARI usuario ON codusur3 = usuario.codusur

UNION

SELECT usurcli.CODCLI as COD_CLIENTE


, usurcli.CODUSUR as COD_USUARIO
, CASE usuario.TIPOVEND
WHEN 'P' THEN 'PRO'
ELSE 'VEN'
END AS PERFIL
, SYSDATE DTALTER
FROM PCUSURCLI usurcli
INNER JOIN PCUSUARI usuario ON usurcli.codusur = usuario.codusur ;
/
CREATE OR REPLACE FORCE VIEW PROIV_ITEM_AVALIADO (CODIGO, NOME, INATIVO, TIPO,
CODIGO_REFERENCIA, CODIGO_FORNECEDOR, CODIGO_DEPARTAMENTO, CODIGO_SECAO,
CODIGO_CATEGORIA, CODIGO_DISTRIBUIDOR, DATA_ALTERACAO) AS
SELECT CODEPTO
, DESCRICAO
, 0 AS INATIVO
, 'DEP' AS TIPO
, null
, null
, null
, null
, null
, null
, SYSDATE
FROM PCDEPTO

UNION ALL
-- SECAO
SELECT CODSEC
, DESCRICAO
, CASE WHEN DTEXCLUSAO IS NULL THEN 0 ELSE 1 END AS INATIVO
, 'SEC' AS TIPO
, null
, null
, CODEPTO
, null
, null
, null
, SYSDATE
FROM PCSECAO

UNION ALL
-- CATEGORIA
SELECT CODCATEGORIA
, CATEGORIA
, 0 AS INATIVO
, 'CAT' AS TIPO
, null
, null
, null
, CODSEC
, null
, null
, SYSDATE
FROM PCCATEGORIA

UNION ALL
-- FORNECEDOR
SELECT CODFORNEC
, FORNECEDOR
, CASE WHEN DTEXCLUSAO IS NULL THEN 0 ELSE 1 END AS INATIVO
, 'FOR' AS TIPO
, null
, null
, null
, null
, null
, null
, DTULTALTER
FROM PCFORNEC
WHERE REVENDA = 'S'

UNION ALL
-- PRODUTO
SELECT CODPROD
, DESCRICAO
, CASE WHEN DTEXCLUSAO IS NULL THEN 0 ELSE 1 END AS INATIVO
, 'PRO' AS TIPO
, CODAUXILIAR AS CODREFERENCIA
, CODFORNEC AS CODIGO_FORNECEDOR
, CODEPTO AS CODIGO_DEPARTAMENTO
, CODSEC AS CODIGO_SECAO
, CODCATEGORIA AS CODIGO_CATEGORIA
, CODDISTRIB AS CODIGO_DISTRIBUIDOR
, DTULTALTER
FROM PCPRODUT
UNION ALL
-- DISTRIBUIDOR
SELECT CASE
WHEN validar_campo (CODDISTRIB) = 0 THEN ASCII (CODDISTRIB)
ELSE CAST (CODDISTRIB AS NUMBER)
END
AS CODDISTRIB,
DESCRICAO,
0 AS INATIVO,
'DIS' AS TIPO,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
SYSDATE
FROM PCDISTRIB;
/

CREATE OR REPLACE VIEW PROIV_PEDIDO (NUMERO_PEDIDO, DATA_PEDIDO, NUMERO_NOTA,


CODIGO_CLIENTE, DATA_ENTREGA, DATA_EMISSAO_NOTA, STATUS_PEDIDO, QTD_ITENS,
CODIGO_PRODUTO, VALOR_UNITARIO, CODIGO_USUARIO)
AS
SELECT pedido.NUMERO_PEDIDO
, pedido.DATA_PEDIDO
, pedido.NUMERO_NOTA
, pedido.CODIGO_CLIENTE
, pedido.DATA_ENTREGA
, pedido.DATA_EMISSAO_NOTA
, pedido.STATUS_PEDIDO
, pedido.QTD_ITENS
, pedido.CODIGO_PRODUTO
, pedido.VALOR_UNITARIO
, pedido.CODIGO_USUARIO
FROM (
SELECT pedc.NUMPED AS NUMERO_PEDIDO
, pedc.DATA AS DATA_PEDIDO
, pedc.NUMNOTA AS NUMERO_NOTA
, pedc.CODCLI AS CODIGO_CLIENTE
, pedc.DTENTREGA AS DATA_ENTREGA
, pedc.POSICAO AS STATUS_PEDIDO
, nfsaid.DTSAIDA AS DATA_EMISSAO_NOTA
-- B: BLOQUEADO, L: LIBERADO, M: MONTADO, P: PENDENTE, F:
FATURADO, C: CANCELADO
, pedi.QT AS QTD_ITENS
, pedi.CODPROD AS CODIGO_PRODUTO
, CAST( DECODE (pedc.CONDVENDA,
5, 0,
6, 0,
11, 0,
12, 0,
NVL (( NVL (pedi.PVENDA, 0)
+ NVL (pedi.VLFRETE, 0)
+ NVL (pedi.VLOUTRASDESP, 0)
+ NVL (pedi.VLFRETE_RATEIO, 0)
+ NVL (pedi.VLOUTROS, 0)
),
0
)
) AS NUMERIC(18,6) ) AS VALOR_UNITARIO
, pedc.CODUSUR AS CODIGO_USUARIO
FROM PCPEDC pedc
LEFT JOIN PCNFSAID nfsaid ON pedc.NUMNOTA = nfsaid.NUMNOTA AND
pedc.CODCLI = nfsaid.CODCLI
LEFT JOIN PCPEDI pedi ON pedc.NUMPED = pedi.NUMPED AND
pedc.CODCLI = pedi.CODCLI
--WHERE
--pedc.CODEMITENTE = '8888' --somente forca de vendas
GROUP BY pedc.NUMPED
, pedc.DATA
, pedc.NUMNOTA
, pedc.CODCLI
, pedc.DTENTREGA
, pedc.POSICAO
, nfsaid.DTSAIDA
, pedi.QT
, pedi.CODPROD
, CAST( DECODE (pedc.CONDVENDA,
5, 0,
6, 0,
11, 0,
12, 0,
NVL (( NVL (pedi.PVENDA, 0)
+ NVL (pedi.VLFRETE, 0)
+ NVL (pedi.VLOUTRASDESP, 0)
+ NVL (pedi.VLFRETE_RATEIO, 0)
+ NVL (pedi.VLOUTROS, 0)
),
0
)
) AS NUMERIC(18,6) )
, pedc.CODUSUR
) pedido;
/
CREATE OR REPLACE FORCE VIEW PROIV_RAMO_ATIVIDADE (CODIGO, NOME) AS
SELECT CODATIV
, RAMO
FROM PCATIVI;
/

CREATE OR REPLACE FORCE VIEW PROIV_REDE (CODIGO, DESCRICAO, DATA_ALTERACAO) AS


SELECT CODREDE
, DESCRICAO
, DTULTALT
FROM PCREDECLIENTE;
/

CREATE OR REPLACE FORCE VIEW PROIV_REGIAO (CODIGO, DESCRICAO, UF, CODIGO_EMPRESA)


AS
SELECT NUMREGIAO
, REGIAO
, UF
, CODFILIAL
FROM PCREGIAO
WHERE STATUS = 'A';
/

Você também pode gostar