-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinsert_fila_inicial_panama.sql
129 lines (118 loc) · 7.96 KB
/
insert_fila_inicial_panama.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'FORMA_PAGAMENTO', 0, TO_JSON(FINALIZADORAS), 'ATUALIZACAO'
FROM (SELECT F.FZDCOD::TEXT AS "id",
UPPER(F.FZDDES) AS "descricao"
FROM FINALIZADORA F)
FINALIZADORAS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'HOLDING', 0, TO_JSON(HOLDINGS), 'ATUALIZACAO'
FROM (SELECT H.HOLCOD::TEXT AS "id",
UPPER(H.HOLDES) AS "descricao"
FROM HOLDING H)
HOLDINGS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'LOJA', 0, TO_JSON(LOJAS), 'ATUALIZACAO'
FROM (SELECT L.LOJ_CODIGO::TEXT AS "id",
L.LOJ_ATIVO AS "ativa",
CASE WHEN L.LOJ_MATRIZ = 'S' THEN true ELSE false END AS "matriz",
P.PES_NUM_DOCUMENTO AS "numeroDocumento",
UPPER(P.PES_NOME) AS "descricao",
P.HOLCOD::TEXT AS "holdingId",
UPPER(F.FIG_DESCRICAO) AS "ramo",
UPPER(P.PES_UF) AS "uf",
UPPER(P.PES_DESCRICAO_CIDADE) AS "cidade",
UPPER(P.PES_BAIRRO) AS "bairro"
FROM PESSOA_LOJA L
JOIN PESSOA P ON (P.PES_CODIGO = L.PES_CODIGO)
JOIN FIGURA_FISCAL F ON (F.FIG_CODIGO = L.FIG_CODIGO))
LOJAS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'FUNCIONARIO', 0, TO_JSON(FUNCIONARIOS), 'ATUALIZACAO'
FROM (SELECT F.FUN_CODIGO::TEXT AS "id",
F.FUN_DATA_NASCIMENTO AS "dataNascimento",
P.PES_NUM_DOCUMENTO AS "numeroDocumento",
UPPER(P.PES_NOME) AS "nome",
UPPER(U.USUNOM) AS "login",
U.USUSEN AS "senha",
COALESCE(U.ATIVO, false) AS "ativo",
(SELECT ARRAY(SELECT FL.LOJCOD::TEXT FROM FUNCIONARIO_LOJA FL WHERE FL.FUNCOD = F.FUN_CODIGO AND FL.FLJ_STATUS = 'A')) AS "lojaIds"
FROM PESSOA_FUNCIONARIO F
JOIN PESSOA P ON (P.PES_CODIGO = F.PES_CODIGO)
LEFT JOIN USUARIO U ON (U.FUNCOD = F.FUN_CODIGO)
LEFT JOIN FUNCIONARIO_LOJA FL ON (FL.FUNCOD = F.FUN_CODIGO AND FL.FLJ_STATUS = 'A')
GROUP BY F.FUN_CODIGO, P.PES_NUM_DOCUMENTO, P.PES_NOME, U.USUNOM, U.USUSEN, U.ATIVO)
FUNCIONARIOS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'ACESSO', 0, TO_JSON(USUARIOS), 'ATUALIZACAO'
FROM (SELECT 'PERM_APP_ACESSO' AS "id",
ARRAY_AGG(U.FUNCOD::TEXT) AS "funcionarioIds"
FROM USUARIO U WHERE U.ADMINISTRADOR = true AND U.ATIVO = true)
USUARIOS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'CLIENTE', 0, TO_JSON(CLIENTES), 'ATUALIZACAO'
FROM (SELECT C.CLI_CODIGO::TEXT AS "id",
UPPER(COALESCE(P.PES_NOME, COALESCE(P.PES_FANTASIA, 'SEM NOME'))) AS "nome",
COALESCE(P.PES_NUM_DOCUMENTO, 'SEM DOCUMENTO') AS "numeroDocumento",
COALESCE(UPPER(R.RAMDES), (SELECT RAMDES FROM RAMO LIMIT 1)) AS "ramo",
COALESCE(UPPER(P.PES_UF), M.PES_UF) AS "uf",
COALESCE(UPPER(P.PES_DESCRICAO_CIDADE), M.PES_DESCRICAO_CIDADE) AS "cidade",
COALESCE(UPPER(P.PES_BAIRRO), M.PES_BAIRRO) AS "bairro"
FROM PESSOA_CLIENTE C
JOIN PESSOA P ON (P.PES_CODIGO = C.PES_CODIGO)
JOIN RAMO R ON (R.RAMCOD = C.RAMCOD)
CROSS JOIN (SELECT P.* FROM PESSOA_LOJA L JOIN PESSOA P ON (P.PES_CODIGO = L.PES_CODIGO) WHERE LOJ_MATRIZ = 'S' LIMIT 1) M
WHERE (P.PES_NOME <> '' OR P.PES_FANTASIA <> '') AND (P.PES_NOME IS NOT NULL OR P.PES_FANTASIA IS NOT NULL))
CLIENTES);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'SECAO', 0, TO_JSON(SECOES), 'ATUALIZACAO'
FROM (SELECT SECID::TEXT AS "id",
SECCOD::TEXT AS "codigo",
COALESCE(UPPER(SECDES), 'SEM DESCRIÇÃO') AS "descricao"
FROM SECAO
WHERE SECCOD IS NOT NULL)
SECOES);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'GRUPO', 0, TO_JSON(GRUPOS), 'ATUALIZACAO'
FROM (SELECT GRPID::TEXT AS "id",
GRPCOD::TEXT AS "codigo",
COALESCE(UPPER(GRPDES), 'SEM DESCRIÇÃO') AS "descricao",
SECCOD::TEXT AS "secaoId"
FROM GRUPO_PRODUTO
WHERE GRPCOD IS NOT NULL AND SECCOD IS NOT NULL)
GRUPOS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'SUBGRUPO', 0, TO_JSON(SUBGRUPOS), 'ATUALIZACAO'
FROM (SELECT SGPID::TEXT AS "id",
SGPCOD::TEXT AS "codigo",
COALESCE(UPPER(SGPDES), 'SEM DESCRIÇÃO') AS "descricao",
GRPCOD::TEXT AS "grupoId",
SECCOD::TEXT AS "secaoId"
FROM SUBGRUPO_PRODUTO
WHERE SGPCOD IS NOT NULL AND GRPCOD IS NOT NULL AND SECCOD IS NOT NULL)
SUBGRUPOS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'PRODUTO', 0, TO_JSON(PRODUTOS), 'ATUALIZACAO'
FROM (SELECT P.PROCOD::TEXT AS "id",
UPPER(P.PRODES) AS "descricao",
UPPER(P.PROFIN) AS "finalidade",
CASE WHEN P.PROPESVAR = 'S' THEN true WHEN P.PROPESVAR = 'P' THEN true WHEN P.PROPESVAR = 'D' THEN true ELSE false END AS "pesoVariavel",
P.PROITEEMBVDA "quantidadeItensEmbalagem",
SG.SGPID::TEXT AS "subgrupoId",
G.GRPID::TEXT AS "grupoId",
S.SECID::TEXT AS "secaoId",
CASE WHEN P.PROCOMP = 'C' AND EXISTS(SELECT 1 FROM COMPONENTES_COMPOSICAO CC JOIN COMPOSICAO C ON (CC.CC_COMP_ID = C.COMP_ID) WHERE C.COMP_PROCOD = P.PROCOD) THEN 'COMPOSTO' WHEN P.PROCOMP = 'K' AND EXISTS(SELECT 1 FROM COMPONENTES_COMPOSICAO CC JOIN COMPOSICAO C ON (CC.CC_COMP_ID = C.COMP_ID) WHERE C.COMP_PROCOD = P.PROCOD) THEN 'KIT' ELSE CASE WHEN P.PROCOMP = 'R' THEN 'RENDIMENTO' ELSE 'NORMAL' END END AS "tipoComposicao",
CASE WHEN (P.PROCOMP = 'C' OR P.PROCOMP = 'K') AND EXISTS(SELECT 1 FROM COMPOSICAO C WHERE C.COMP_PROCOD = P.PROCOD) THEN (SELECT TO_JSON(COMPOSICAO) FROM (SELECT (SELECT COALESCE(C.COMP_QUANTIDADE, 1) FROM composicao C where C.COMP_PROCOD = P.PROCOD) AS "quantidade", JSON_AGG(COMPONENTES) AS "itens" FROM (SELECT CC.CC_PROCOD::TEXT AS "produtoId", CC.CC_QUANTIDADE AS "quantidade" FROM COMPONENTES_COMPOSICAO CC JOIN COMPOSICAO C ON (CC.CC_COMP_ID = C.COMP_ID) WHERE C.COMP_PROCOD = P.PROCOD) COMPONENTES) COMPOSICAO) ELSE null END AS "composicao"
FROM PRODUTO P
JOIN SECAO S ON (S.SECCOD = P.SECCOD)
LEFT JOIN GRUPO_PRODUTO G ON (G.GRPCOD = P.GRPCOD AND G.SECCOD = P.SECCOD)
LEFT JOIN SUBGRUPO_PRODUTO SG ON (SG.SGPCOD = P.SGPCOD AND SG.GRPCOD = P.GRPCOD AND SG.SECCOD = P.SECCOD)
GROUP BY P.PROCOD, P.PRODES, P.PROFIN, P.PROPESVAR, P.PROITEEMBVDA, SG.SGPID, G.GRPID, S.SECID, P.PROCOMP)
PRODUTOS);
INSERT INTO FILA_SINCRONIZACAO_PANAMA (ID, IDENTIFICADOR, PRIORIDADE, BODY, OPERACAO)
(SELECT NEXTVAL('SQ_FILA_SINCRONIZACAO_PANAMA'), 'EAN', 0, TO_JSON(AUXILIARES), 'ATUALIZACAO'
FROM (SELECT UPPER(PROCODAUX)::TEXT AS "id",
PROCOD::TEXT AS "produtoId"
FROM PRODUTOAUX)
AUXILIARES);
UPDATE FILA_SINCRONIZACAO_PANAMA F SET ORIGEM = 'MIGRACAO', OBJETO_ID = T.BODY::JSON->>'id'
FROM (SELECT * FROM FILA_SINCRONIZACAO_PANAMA WHERE OBJETO_ID IS NULL OR ORIGEM IS NULL) T WHERE F.ID = T.ID;