x
1
declare
2
idparceiro_ integer;
3
begin
4
-- VALIDACAO
5
-- EXTERNALID E INTERNALID NAO INFORMADOS
6
if coalesce(PutLocalTelefone.externalid,'')='' and PutLocalTelefone.internalid is null then
7
RAISE EXCEPTION 'externalid = % and internalid = %', PutLocalTelefone.externalid, PutLocalTelefone.internalid
8
USING HINT = 'Fields internalid and externalid must be not null';
9
end if;
10
11
--IDNPADRAO NULO OU FORA DO PADRAO
12
if idnpadrao not in (0,1,-99999) then
13
RAISE EXCEPTION 'idnpadrao = %', idnpadrao
14
USING HINT = 'Field must not be null or different from 1 or 0.';
15
end if;
16
17
--TELEFONE NULO
18
if PutLocalTelefone.telefone is null then
19
RAISE EXCEPTION 'telefone = %', PutLocalTelefone.telefone
20
USING HINT = 'Field telefone must be not null';
21
end IF;
22
23
-- LOOKUP
24
-- LOCALTELEFONE
25
IF PutLocalTelefone.internalid IS NULL
26
THEN PutLocalTelefone.internalid = (SELECT LOCALTELEFONE.IDLOCALTELEFONE FROM LOCALTELEFONE WHERE LOCALTELEFONE.CODIGOERP = PutLocalTelefone.externalid);
27
END IF;
28
29
-- CLIENTELOCAL
30
IF PutLocalTelefone.idclientelocal IS NULL AND PutLocalTelefone.idclientelocal_externalid IS NOT NULL
31
THEN PutLocalTelefone.idclientelocal = (SELECT C2.idlocal FROM local C2 WHERE C2.CODIGOERP = PutLocalTelefone.idclientelocal_externalid);
32
END IF;
33
34
if PutLocalTelefone.idclientelocal is null then
35
RAISE EXCEPTION 'idclientelocal = %', PutLocalTelefone.idclientelocal
36
USING HINT = 'Field idclientelocal must be not null';
37
end if;
38
-- CLIENTE
39
idparceiro_ = (SELECT distinct C2.idparceiro FROM parceirolocal C2 WHERE C2.idlocal = PutLocalTelefone.idclientelocal);
40
41
-- UPDATE
42
update localtelefone set
43
idparceiro = case when PutLocalTelefone.idclientelocal = -99999 then localtelefone.idparceiro else idparceiro_ end,
44
idlocal = case when PutLocalTelefone.idclientelocal = -99999 then localtelefone.idlocal else PutLocalTelefone.idclientelocal END,
45
telefone = case when PutLocalTelefone.telefone = 'NOVALUEWS' then localtelefone.telefone else PutLocalTelefone.telefone end,
46
idnpadrao = case when PutLocalTelefone.idnpadrao = -99999 then localtelefone.idnpadrao else PutLocalTelefone.idnpadrao end,
47
codigoerp = case when PutLocalTelefone.externalid = 'NOVALUEWS' then codigoerp else PutLocalTelefone.externalid end
48
where idlocaltelefone = internalid ;
49
50
return query select internalid;
51
END;