Migração de Tributação para Propriedades (Osklen - versão maior 3.16.0.2)
-- TRUNCATE TABLE propriedade;
INSERT INTO propriedade (tabela, id_tabela, propriedade, data_criacao, `data`)
WITH pg AS (
SELECT MIN(id) AS id_produto_grade, id_produto FROM produto_grade WHERE id_produto NOT IN (SELECT id_tabela FROM propriedade WHERE tabela = 'produto') GROUP BY id_produto
)
SELECT
'produto', pg.id_produto, JSON_SET('{}', "$.tributacao", JSON_OBJECTAGG( i.descricao, i.valor )), gi.`data`, gi.`data`
FROM
imposto i
INNER JOIN produto_grade_grupo_imposto gi ON (gi.id_grupo_imposto = i.id_grupo_imposto)
INNER JOIN pg ON (gi.id_produto_grade = pg.id_produto_grade)
WHERE
i.valor IS NOT NULL
GROUP BY
i.id_grupo_imposto;
INSERT INTO propriedade (tabela, id_tabela, propriedade, data_criacao, `data`)
WITH t AS (
SELECT id, id_grupo_imposto, `data` FROM tributacao WHERE id NOT IN (SELECT id_tabela FROM propriedade WHERE tabela = 'tributacao')
)
SELECT
'tributacao', t.id, JSON_OBJECTAGG( i.descricao, i.valor ), i.`data`, i.`data`
FROM
imposto i
INNER JOIN t ON (t.id_grupo_imposto = i.id_grupo_imposto)
WHERE
i.valor IS NOT NULL
GROUP BY
i.id_grupo_imposto;
INSERT INTO propriedade (tabela, id_tabela, propriedade, data_criacao, `data`)
WITH m AS (
SELECT id FROM movimentacao WHERE id NOT IN (SELECT id_tabela FROM propriedade WHERE tabela = 'movimentacao')
)
SELECT
'movimentacao', m.id, JSON_SET('{}', "$.tributacao", JSON_OBJECTAGG( i.descricao, i.valor )), gi.`data`, gi.`data`
FROM
imposto i
INNER JOIN movimentacao_grupo_imposto gi ON (gi.id_grupo_imposto = i.id_grupo_imposto)
INNER JOIN m ON (gi.id_movimentacao = m.id)
WHERE
i.valor IS NOT NULL
GROUP BY
i.id_grupo_imposto;
INSERT INTO propriedade (tabela, id_tabela, propriedade, data_criacao, `data`)
WITH md AS (
SELECT id FROM movimentacao WHERE id NOT IN (SELECT id_tabela FROM propriedade WHERE tabela = 'movimentacao_detalhe')
)
SELECT
'movimentacao_detalhe', md.id, JSON_SET('{}', "$.tributacao", JSON_OBJECTAGG( i.descricao, i.valor )), gi.`data`, gi.`data`
FROM
imposto i
INNER JOIN movimentacao_detalhe_grupo_imposto gi ON (gi.id_grupo_imposto = i.id_grupo_imposto)
INNER JOIN md ON (gi.id_movimentacao_detalhe = md.id)
WHERE
i.valor IS NOT NULL
GROUP BY
i.id_grupo_imposto;
UPDATE tributacao SET id_grupo_imposto = NULL WHERE id_grupo_imposto IS NOT NULL;
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE imposto;
TRUNCATE movimentacao_detalhe_grupo_imposto;
TRUNCATE movimentacao_grupo_imposto;
TRUNCATE produto_grade_grupo_imposto;
TRUNCATE grupo_imposto;
SET FOREIGN_KEY_CHECKS = 1;
Nenhum comentário