Ajuste de Tributação (versão superior a 3.16.0.0)
Com a atualização disponível a partir da versão 3.16.0.0, algumas estruturas sofreram alteração, dentre elas a migração das tabelas de tributação para a propriedade e a migração do campo ICMS Origem do produto para o cadastro de produto, segue as rotinas a serem executadas abaixo:
1 - Migração de Dados
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;
2 - Ajuste do campo ICMS Origem
INSERT INTO propriedade (tabela, id_tabela, propriedade, data_criacao) (
WITH x AS (
SELECT
'produto' AS tabela,
p.id AS id_tabela,
IF(
pp.propriedade IS NULL,
'{"tributacao": {"icmsOrigem": "0"}}',
JSON_SET(pp.propriedade, "$.tributacao.icmsOrigem", '0')
) AS propriedade,
NOW() AS data_criacao
FROM
produto p
LEFT JOIN propriedade pp ON (pp.id_tabela = p.id AND pp.tabela = 'produto')
)
SELECT * FROM x
) ON DUPLICATE KEY UPDATE propriedade = VALUES(propriedade);
3 - Limpeza de Banco
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