x
1
begin
2
-- VALIDACAO
3
-- EXTERNALID E INTERNALID NAO INFORMADOS
4
if coalesce(PutPedido.externalid,'')='' and PutPedido.internalid is null then
5
RAISE EXCEPTION 'externalid = % and internalid = %', PutPedido.externalid, PutPedido.internalid
6
USING HINT = 'Fields internalid and externalid must be not null';
7
end if;
8
9
--IDNEXPORTADOERP NULO OU FORA DO PADRAO
10
if idnexportadoerp not in (0,1,-99999) then
11
RAISE EXCEPTION 'idnexportadoerp = %', idnexportadoerp
12
USING HINT = 'Field must not be null or different from 1 or 0.';
13
end if;
14
15
--DATAPEDIDO NULO
16
if PutPedido.datapedido is null then
17
RAISE EXCEPTION 'datapedido = %', PutPedido.datapedido
18
USING HINT = 'Field datapedido must be not null';
19
end if;
20
21
--NUMEROPEDIDO NULO
22
if PutPedido.numeropedido is null then
23
RAISE EXCEPTION 'numeropedido = %', PutPedido.numeropedido
24
USING HINT = 'Field numeropedido must be not null';
25
end if;
26
27
--SGLORIGEMPEDIDO NULO
28
if PutPedido.sglorigempedido is null then
29
RAISE EXCEPTION 'sglorigempedido = %', PutPedido.sglorigempedido
30
USING HINT = 'Field sglorigempedido must be not null';
31
end if;
32
33
-- LOOKUP
34
-- PEDIDO
35
IF PutPedido.internalid IS NULL
36
THEN PutPedido.internalid = (SELECT IDPEDIDO FROM PEDIDO WHERE CODIGOERP = PutPedido.externalid);
37
END IF;
38
39
-- TIPOSITUACAOPEDIDO
40
IF PutPedido.idtiposituacaopedido IS NULL AND PutPedido.idtiposituacaopedido_externalid IS NOT NULL
41
THEN PutPedido.idtiposituacaopedido = (SELECT C2.idtiposituacaopedido FROM tiposituacaopedido C2 WHERE C2.CODIGOERP = PutPedido.idtiposituacaopedido_externalid);
42
END IF;
43
44
if PutPedido.idtiposituacaopedido is null then
45
RAISE EXCEPTION 'idtiposituacaopedido = %', PutPedido.idtiposituacaopedido
46
USING HINT = 'Field idtiposituacaopedido must be not null';
47
end if;
48
49
-- CLIENTELOCAL
50
IF PutPedido.idclientelocal IS NULL AND PutPedido.idclientelocal_externalid IS NOT NULL
51
THEN PutPedido.idclientelocal = (SELECT C2.idlocal FROM local C2 WHERE C2.CODIGOERP = PutPedido.idclientelocal_externalid);
52
END IF;
53
54
if PutPedido.idclientelocal is null then
55
RAISE EXCEPTION 'idclientelocal = %', PutPedido.idclientelocal
56
USING HINT = 'Field idclientelocal must be not null';
57
end if;
58
59
-- CLIENTE
60
IF PutPedido.idcliente IS NULL AND PutPedido.idcliente_externalid IS NOT NULL
61
THEN PutPedido.idcliente = (SELECT C2.idparceiro FROM parceiro C2 WHERE C2.CODIGOERP = PutPedido.idcliente_externalid);
62
END IF;
63
64
if PutPedido.idcliente is null then
65
RAISE EXCEPTION 'idcliente = %', PutPedido.idcliente
66
USING HINT = 'Field idcliente must be not null';
67
end if;
68
69
-- USUARIO
70
IF PutPedido.idusuario IS NULL AND PutPedido.idusuario_externalid IS NOT NULL
71
THEN PutPedido.idusuario = (SELECT C2.idusuario FROM USUARIO C2 WHERE C2.CODIGOERP = PutPedido.idusuario_externalid);
72
END IF;
73
74
if PutPedido.idusuario is null then
75
RAISE EXCEPTION 'idusuario = %', PutPedido.idusuario
76
USING HINT = 'Field idusuario must be not null';
77
end if;
78
79
-- FILIALFATURAMENTO
80
IF PutPedido.idfiliallocalfaturamento IS NULL AND PutPedido.idfiliallocalfaturamento_externalid IS NOT NULL
81
THEN PutPedido.idfiliallocalfaturamento = (SELECT C2.idlocal FROM LOCAL C2 WHERE C2.CODIGOERP = PutPedido.idfiliallocalfaturamento_externalid);
82
END IF;
83
84
-- FILIALVENDA
85
IF PutPedido.idfiliallocalvenda IS NULL AND PutPedido.idfiliallocalvenda_externalid IS NOT NULL
86
THEN PutPedido.idfiliallocalvenda = (SELECT C2.idlocal FROM LOCAL C2 WHERE C2.CODIGOERP = PutPedido.idfiliallocalvenda_externalid);
87
END IF;
88
89
-- CONDICAOPAGAMENTO
90
IF PutPedido.idcondicaopagamento IS NULL AND PutPedido.idcondicaopagamento_externalid IS NOT NULL
91
THEN PutPedido.idcondicaopagamento = (SELECT C2.idcondicaopagamento FROM condicaopagamento C2 WHERE C2.CODIGOERP = PutPedido.idcondicaopagamento_externalid);
92
END IF;
93
94
-- TABELAPRECO
95
IF PutPedido.idtabelapreco IS NULL AND PutPedido.idtabelapreco_externalid IS NOT NULL
96
THEN PutPedido.idtabelapreco = (SELECT C2.idtabelapreco FROM tabelapreco C2 WHERE C2.CODIGOERP = PutPedido.idtabelapreco_externalid);
97
END IF;
98
99
-- TIPOPEDIDO
100
IF PutPedido.idtipopedido IS NULL AND PutPedido.idtipopedido_externalid IS NOT NULL
101
THEN PutPedido.idtipopedido = (SELECT C2.idtipopedido FROM tipopedido C2 WHERE C2.CODIGOERP = PutPedido.idtipopedido_externalid);
102
END IF;
103
104
--LOOKUP TIPOCOBRANCA
105
IF PutPedido.idtipocobranca IS NULL AND PutPedido.idtipocobranca_externalid IS NOT NULL
106
THEN PutPedido.idtipocobranca = (SELECT C2.idtipocobranca FROM tipocobranca C2 WHERE C2.CODIGOERP = PutPedido.idtipocobranca_externalid);
107
END IF;
108
109
--LOOKUP SEGMENTO
110
IF PutPedido.idsegmento IS NULL AND PutPedido.idsegmento_externalid IS NOT NULL
111
THEN PutPedido.idsegmento = (SELECT C2.idsegmento FROM segmento C2 WHERE C2.CODIGOERP = PutPedido.idsegmento_externalid);
112
END IF;
113
114
--LOOKUP TIPOESTOQUE
115
IF PutPedido.idtipoestoque IS NULL AND PutPedido.idtipoestoque_externalid IS NOT NULL
116
THEN PutPedido.idtipoestoque = (SELECT C2.idtipoestoque FROM TIPOESTOQUE C2 WHERE C2.CODIGOERP = PutPedido.idtipoestoque_externalid);
117
END IF;
118
119
-- UPDATE
120
update pedido set
121
numeropedido = case when PutPedido.numeropedido = 'NOVALUEWS' then pedido.numeropedido else PutPedido.numeropedido end,
122
numeropedidoerp = case when PutPedido.numeropedidoerp = 'NOVALUEWS' then pedido.numeropedidoerp else PutPedido.numeropedidoerp end,
123
sglorigempedido = case when PutPedido.sglorigempedido = 'NOVALUEWS' then pedido.sglorigempedido else PutPedido.sglorigempedido end,
124
horatransmissao = case when PutPedido.horatransmissao = 'NOVALUEWS' then pedido.horatransmissao else PutPedido.horatransmissao end,
125
datatransmissao = case when PutPedido.datatransmissao = 'NOVALUEWS' then pedido.datatransmissao else TO_DATE(PutPedido.datatransmissao,'YYYY-MM-DD') end,
126
observacaopedido = case when PutPedido.observacaopedido = 'NOVALUEWS' then pedido.observacaopedido else PutPedido.observacaopedido end,
127
observacaonotafiscal = case when PutPedido.observacaonotafiscal = 'NOVALUEWS' then pedido.observacaonotafiscal else PutPedido.observacaonotafiscal end,
128
datapedido = case when PutPedido.datapedido = 'NOVALUEWS' then pedido.datapedido else TO_DATE(PutPedido.datapedido,'YYYY-MM-DD') end,
129
idlocalfilialfaturamento = case when PutPedido.idfiliallocalfaturamento = -99999 then pedido.idlocalfilialfaturamento else PutPedido.idfiliallocalfaturamento end,
130
idlocalfilialvenda = case when PutPedido.idfiliallocalvenda = -99999 then pedido.idlocalfilialvenda else PutPedido.idfiliallocalvenda end,
131
idtabelapreco = case when PutPedido.idtabelapreco = -99999 then pedido.idtabelapreco else PutPedido.idtabelapreco end,
132
idcondicaopagamento = case when PutPedido.idcondicaopagamento = -99999 then pedido.idcondicaopagamento else PutPedido.idcondicaopagamento end,
133
idtiposituacaopedido = case when PutPedido.idtiposituacaopedido = -99999 then pedido.idtiposituacaopedido else PutPedido.idtiposituacaopedido end,
134
idlocal = case when PutPedido.idclientelocal = -99999 then pedido.idlocal else PutPedido.idclientelocal end,
135
idparceiro = case when PutPedido.idcliente = -99999 then pedido.idparceiro else PutPedido.idcliente end,
136
idusuarioprofissional = case when PutPedido.idusuario = -99999 then pedido.idusuarioprofissional else PutPedido.idusuario end,
137
valortotal = case when PutPedido.valortotal = -99999 then pedido.valortotal else PutPedido.valortotal end,
138
quantidadetotal = case when PutPedido.quantidadetotal = -99999 then pedido.quantidadetotal else PutPedido.quantidadetotal end,
139
idtipocobranca = case when PutPedido.idtipocobranca = -99999 then pedido.idtipocobranca else PutPedido.idtipocobranca end,
140
idsegmento = case when PutPedido.idsegmento = -99999 then pedido.idsegmento else PutPedido.idsegmento end,
141
idtipopedido = case when PutPedido.idtipopedido = -99999 then pedido.idtipopedido else PutPedido.idtipopedido end,
142
observacaointegracao = case when Putpedido.observacaointegracao = 'NOVALUEWS' then pedido.observacaointegracao else Putpedido.observacaointegracao end,
143
idnexportadoerp = case when Putpedido.idnexportadoerp = -99999 then pedido.idnexportadoerp else Putpedido.idnexportadoerp end,
144
idtipoestoque = case when Putpedido.idtipoestoque = -99999 then pedido.idtipoestoque else Putpedido.idtipoestoque end,
145
codigoerp = case when Putpedido.externalid = 'NOVALUEWS' then codigoerp else Putpedido.externalid end,
146
numeronotafiscalorigem = case when Putpedido.numeronotafiscalorigem = 'NOVALUEWS' then pedido.numeronotafiscalorigem else Putpedido.numeronotafiscalorigem end
147
where idpedido = internalid ;
148
149
return query select internalid;
150
END;