x
1
declare
2
sgltipopessoa varchar(10);
3
idunidadefederativa integer;
4
curdate date;
5
begin
6
curdate = current_date;
7
8
-- VALIDACAO EXTERNALID E INTERNALID NAO INFORMADOS
9
if coalesce(PutClienteLocal.externalid,'')='' and PutClienteLocal.internalid is null then
10
RAISE EXCEPTION 'externalid = % and internalid = %', PutClienteLocal.externalid, PutClienteLocal.internalid
11
USING HINT = 'Fields internalid and externalid must be not null';
12
end if;
13
14
--IDNATIVO FORA DO PADRAO
15
if idnativo not in (0,1,-99999) then
16
RAISE EXCEPTION 'idnativo = %', idnativo
17
USING HINT = 'Field must not be null or different from 1 or 0.';
18
end if;
19
20
-- LOOKUP CLIENTE LOCAL
21
IF PutClienteLocal.internalid IS NULL
22
THEN PutClienteLocal.internalid = (SELECT IDLOCAL FROM LOCAL WHERE CODIGOERP = PutClienteLocal.externalid);
23
END IF;
24
25
-- CLIENTE
26
IF PutClienteLocal.idcliente IS NULL AND PutClienteLocal.idcliente_externalid IS NOT NULL
27
THEN PutClienteLocal.idcliente = (SELECT C2.idparceiro FROM parceiro C2 WHERE C2.CODIGOERP = PutClienteLocal.idcliente_externalid);
28
END IF;
29
30
if PutClienteLocal.idcliente is null then
31
RAISE EXCEPTION 'idcliente = %', idcliente
32
USING HINT = 'Field idcliente must be not null';
33
end if;
34
-- TIPO PESSOA
35
sgltipopessoa = (SELECT C2.sgltipopessoa FROM parceiro C2 WHERE C2.idparceiro = PutClienteLocal.idcliente);
36
37
-- TIPOLOCAL
38
IF PutClienteLocal.idtipolocal IS NULL AND PutClienteLocal.idtipolocal_externalid IS NOT NULL
39
THEN PutClienteLocal.idtipolocal = (SELECT C2.idtipolocal FROM tipolocal C2 WHERE C2.CODIGOERP = PutClienteLocal.idtipolocal_externalid);
40
END IF;
41
42
if PutClienteLocal.idtipolocal is null then
43
RAISE EXCEPTION 'idtipolocal = %', PutClienteLocal.idtipolocal
44
USING HINT = 'Field idtipolocal must be not null';
45
end if;
46
47
-- CIDADE
48
IF PutClienteLocal.idcidade IS NULL AND PutClienteLocal.idcidade_externalid IS NOT NULL
49
THEN PutClienteLocal.idcidade = (SELECT C2.idcidade FROM cidade C2 WHERE C2.CODIGOERP = PutClienteLocal.idcidade_externalid);
50
END IF;
51
52
if PutClienteLocal.idcidade is null then
53
RAISE EXCEPTION 'idcidade = %', PutClienteLocal.idcidade
54
USING HINT = 'Field idcidade must be not null';
55
end if;
56
-- UNIDADE FEDERATIVA
57
idunidadefederativa = (SELECT C2.idunidadefederativa FROM cidade C2 WHERE C2.idcidade = PutClienteLocal.idcidade);
58
59
-- UPDATE
60
update local set
61
idnativo = case when PutClienteLocal.idnativo = -99999 then local.idnativo else PutClienteLocal.idnativo end,
62
descricao = case when PutClienteLocal.descricao = 'NOVALUEWS' then local.descricao else PutClienteLocal.descricao end,
63
numeromatricula = case when PutClienteLocal.numeromatricula = 'NOVALUEWS' then local.numeromatricula else PutClienteLocal.numeromatricula end,
64
bairro = case when PutClienteLocal.bairro = 'NOVALUEWS' then local.bairro else PutClienteLocal.bairro end,
65
cnpj = case when PutClienteLocal.cgc = 'NOVALUEWS' then local.cnpj else PutClienteLocal.cgc end,
66
documentoidentificacao = case when PutClienteLocal.rg = 'NOVALUEWS' then local.documentoidentificacao else PutClienteLocal.rg end,
67
cep = case when PutClienteLocal.cep = 'NOVALUEWS' then local.cep else PutClienteLocal.cep end,
68
inscricaoestadual = case when PutClienteLocal.inscricaoestadual = 'NOVALUEWS' then local.inscricaoestadual else PutClienteLocal.inscricaoestadual end,
69
inscricaomunicipal = case when PutClienteLocal.inscricaomunicipal = 'NOVALUEWS' then local.inscricaomunicipal else PutClienteLocal.inscricaomunicipal end,
70
logradouro = case when PutClienteLocal.logradouro = 'NOVALUEWS' then local.logradouro else PutClienteLocal.logradouro end,
71
numerologradouro = case when PutClienteLocal.numerologradouro = 'NOVALUEWS' then local.numerologradouro else PutClienteLocal.numerologradouro end,
72
complemento = case when PutClienteLocal.complemento = 'NOVALUEWS' then local.complemento else PutClienteLocal.complemento end,
73
dataultimaatualizacao = curdate,
74
idcidade = case when PutClienteLocal.idcidade = -99999 then local.idcidade else PutClienteLocal.idcidade end,
75
idunidadefederativafiscal = case when PutClienteLocal.idcidade = -99999 then local.idunidadefederativafiscal else idunidadefederativa end,
76
codigoerp = case when PutClienteLocal.externalid = 'NOVALUEWS' then codigoerp else PutClienteLocal.externalid end
77
where idlocal = internalid ;
78
79
update localidentificacao set
80
documentoidentificacao = case when PutClienteLocal.cgc = 'NOVALUEWS' then localidentificacao.documentoidentificacao else PutClienteLocal.cgc end,
81
codigoerp = case when PutClienteLocal.externalid = 'NOVALUEWS' then codigoerp else PutClienteLocal.externalid end
82
where idlocal = internalid
83
AND idtipoidentificacao = (select idtipoidentificacao from tipoidentificacao where sigla = CASE WHEN sgltipopessoa = 'PJ' THEN 'cnpj' ELSE 'cpf' END);
84
85
update localidentificacao set
86
documentoidentificacao = case when PutClienteLocal.inscricaoestadual = 'NOVALUEWS' then localidentificacao.documentoidentificacao else PutClienteLocal.inscricaoestadual end
87
where idlocal = internalid
88
AND idtipoidentificacao = (select idtipoidentificacao from tipoidentificacao where lower(sigla) = 'inscricaoestadual');
89
90
update localidentificacao set
91
documentoidentificacao = case when PutClienteLocal.inscricaomunicipal = 'NOVALUEWS' then localidentificacao.documentoidentificacao else PutClienteLocal.inscricaomunicipal end
92
where idlocal = internalid
93
AND idtipoidentificacao = (select idtipoidentificacao from tipoidentificacao where lower(sigla) = 'inscricaomunicipal');
94
95
update parceirolocal set
96
idparceiro = case when PutClienteLocal.idcliente = -99999 then parceirolocal.idparceiro else PutClienteLocal.idcliente end,
97
codigoerp = case when PutClienteLocal.externalid = 'NOVALUEWS' then codigoerp else PutClienteLocal.externalid end
98
where idlocal = internalid ;
99
100
update localtipolocal set
101
idtipolocal = case when PutClienteLocal.idtipolocal = -99999 then localtipolocal.idtipolocal else PutClienteLocal.idtipolocal end,
102
idnativo = case when PutClienteLocal.idnativo = -99999 then localtipolocal.idnativo else PutClienteLocal.idnativo end,
103
codigoerp = case when PutClienteLocal.externalid = 'NOVALUEWS' then codigoerp else PutClienteLocal.externalid end
104
where idlocal = internalid ;
105
106
return query select internalid;
107
END;