x
1
begin
2
-- VALIDACAO
3
-- EXTERNALID E INTERNALID NAO INFORMADOS
4
if coalesce(PutUsuarioHierarquia.externalid,'')='' and PutUsuarioHierarquia.internalid is null then
5
RAISE EXCEPTION 'externalid = % and internalid = %', PutUsuarioHierarquia.externalid, PutUsuarioHierarquia.internalid
6
USING HINT = 'Fields internalid and externalid must be not null';
7
end if;
8
9
-- LOOKUP
10
-- USUARIO HIERARQUIA
11
IF PutUsuarioHierarquia.internalid IS NULL
12
THEN PutUsuarioHierarquia.internalid = (SELECT IDUSUARIOHIERARQUIA FROM USUARIOHIERARQUIA WHERE CODIGOERP = PutUsuarioHierarquia.externalid);
13
END IF;
14
15
-- IDUSUARIOSUPERIOR
16
IF PutUsuarioHierarquia.idusuariosubordinado IS NULL AND PutUsuarioHierarquia.idusuariosubordinado_externalid IS NOT NULL
17
THEN PutUsuarioHierarquia.idusuariosubordinado = (SELECT C2.idusuario FROM usuario C2 WHERE C2.CODIGOERP = PutUsuarioHierarquia.idusuariosubordinado_externalid);
18
END IF;
19
20
if PutUsuarioHierarquia.idusuariosubordinado is null then
21
RAISE EXCEPTION 'idusuariosubordinado = %', PutUsuarioHierarquia.idusuariosubordinado
22
USING HINT = 'Field idusuariosubordinado must be not null';
23
end if;
24
25
-- IDUSUARIOSUPERIOR
26
IF PutUsuarioHierarquia.idusuariosuperior IS NULL AND PutUsuarioHierarquia.idusuariosuperior_externalid IS NOT NULL
27
THEN PutUsuarioHierarquia.idusuariosuperior = (SELECT C2.idusuario FROM usuario C2 WHERE C2.CODIGOERP = PutUsuarioHierarquia.idusuariosuperior_externalid);
28
END IF;
29
30
if PutUsuarioHierarquia.idusuariosuperior is null then
31
RAISE EXCEPTION 'idusuariosuperior = %', PutUsuarioHierarquia.idusuariosuperior
32
USING HINT = 'Field idusuariosuperior must be not null';
33
end if;
34
35
-- UPDATE
36
update usuariohierarquia set
37
idusuario = case when PutUsuarioHierarquia.idusuariosubordinado = -99999 then usuariohierarquia.idusuario else PutUsuarioHierarquia.idusuariosubordinado end,
38
idusuariosuperior = case when PutUsuarioHierarquia.idusuariosuperior = -99999 then usuariohierarquia.idusuariosuperior else PutUsuarioHierarquia.idusuariosuperior end,
39
codigoerp = case when PutUsuarioHierarquia.externalid = 'NOVALUEWS' then codigoerp else PutUsuarioHierarquia.externalid end
40
where idusuariohierarquia = internalid ;
41
42
return query select internalid;
43
END;