x
1
begin
2
-- VALIDACAO
3
-- EXTERNALID E INTERNALID NAO INFORMADOS
4
if coalesce(PutTipoLocal.externalid,'')='' and PutTipoLocal.internalid is null then
5
RAISE EXCEPTION 'externalid = % and internalid = %', PutTipoLocal.externalid, PutTipoLocal.internalid
6
USING HINT = 'Fields internalid and externalid must be not null';
7
end if;
8
9
--IDNATIVO FORA DO PADRAO
10
if idnativo not in (0,1,-99999) then
11
RAISE EXCEPTION 'idnativo = %', idnativo
12
USING HINT = 'Field must not be null or different from 1 or 0.';
13
end if;
14
15
--DESCRICAO NULA
16
if descricao is null then
17
RAISE EXCEPTION 'descricao = %', descricao
18
USING HINT = 'Field descricao must be not null';
19
end if;
20
21
--SGLTIPOLOCAL NULA
22
if sgltipolocal is null then
23
RAISE EXCEPTION 'sgltipolocal = %', sgltipolocal
24
USING HINT = 'Field sgltipolocal must be not null';
25
end if;
26
27
-- LOOKUP
28
-- TIPO LOCAL
29
IF PutTipoLocal.internalid IS NULL
30
THEN PutTipoLocal.internalid = (SELECT IDTIPOLOCAL FROM TIPOLOCAL WHERE CODIGOERP = PutTipoLocal.externalid);
31
END IF;
32
33
-- UPDATE
34
update tipolocal set
35
descricao = case when PutTipoLocal.descricao = 'NOVALUEWS' then tipolocal.descricao else PutTipoLocal.descricao end,
36
sgltipolocal = case when PutTipoLocal.sgltipolocal = 'NOVALUEWS' then tipolocal.sgltipolocal else PutTipoLocal.sgltipolocal end,
37
idnativo = case when PutTipoLocal.idnativo = -99999 then tipolocal.idnativo else PutTipoLocal.idnativo end,
38
codigoerp = case when PutTipoLocal.externalid = 'NOVALUEWS' then codigoerp else PutTipoLocal.externalid end
39
where idtipolocal = internalid;
40
41
return query select internalid;
42
END;