====== Processo de Configuração Tributária de Produtos via Planilha ======
===== 1. Extração de Dados do Banco de Dados =====
Primeiramente, no banco de dados do cliente, precisamos acessar o **IBExpert** e, no executor de SELECT, rodar o comando abaixo para obter as informações corretas dos produtos:
select distinct
prod.idproduto,
prod.descricao,
prod.codncm,
prod.codcest,
prod.codbarras,
CASE
When ncm.idgrupoicms = 600 then 5405
When ncm.idgrupoicms = 605 then 5102
else 5102
END as CFOP,
CASE
When ncm.idgrupoicms = 600 then 60
When ncm.idgrupoicms = 605 then '00'
else 40
END as CST,
pis.entrada_pis_cst,
pis.entrada_cofins_cst,
pis.saida_pis_cst,
pis.saida_cofins_cst,
prod.cclasstrib_ibs_cbs as cClassTrib
from testproduto prod
inner join testncm ncm on (prod.codncm = ncm.codigo)
inner join testprodutoempresa proe on (prod.idproduto = proe.idproduto
and prod.empresa = proe.empresa)
inner join testgrupopiscofins pis on (proe.idgrupopiscofins = pis.idgrupopiscofins)
where prod.ativo = 'S'
order by prod.idproduto
----
===== 2. Exportação do Resultado para CSV =====
Após executar o SELECT no IBExpert, é necessário exportar o resultado para arquivo CSV.
Siga os passos abaixo:
* Clique em **SQL Editor** na parte superior esquerda.
* Clique em **Export Data**.
{{:menu:estoque:01_exportanto_planilha_csv.png?nolink&400|}}
* Na tela seguinte, selecione a opção **CSV File**.
* No campo **Destination File**, clique na pastinha amarela.
* Defina o nome do arquivo e o caminho onde ele será salvo.
* Confirme a exportação.
{{:menu:estoque:02_seleciona_formato_caminhoarquivo.png?nolink&400|}}
----
===== 3. Conversão do Arquivo CSV para Excel (.XLSX) =====
Após exportar o arquivo no formato **CSV**, é necessário convertê-lo para o formato **.XLSX**, pois é o formato mais utilizado pelas contabilidades.
==== Procedimento para conversão ====
* Abra o arquivo **CSV** no Excel.
* Clique em **Arquivo**.
* Selecione **Exportar**.
* Alterar tipo de arquivo.
* Escolha **Pasta de Trabalho (*.xlsx)**.
* Clique em **Salvar**.
{{:menu:estoque:exporta_csv_xlsx.png?nolink&400|}}
Após esse processo, o arquivo estará no formato adequado para envio à contabilidade.
----
===== 4. Inserção das Colunas Tributárias Complementares =====
Antes de alterar os campos para formato **Texto**, é necessário inserir três novas colunas na planilha.
==== Procedimento ====
* Localize a coluna **cClassTrib**.
* Insira três novas colunas antes dela.
* Nomeie as colunas na seguinte ordem:
1. **ALIQ. PIS**
2. **ALIQ. COFINS**
3. **COD. DA NATUREZA PIS/COFINS**
Após a inserção:
* A coluna **cClassTrib** será deslocada para a próxima posição disponível.
⚠️ Certifique-se de que os dados não foram desalinhados após a inserção das novas colunas.
----
===== 5. Ajuste do Formato das Células para Texto =====
⚠️ Este passo é obrigatório antes de enviar o arquivo para a contabilidade.
O Excel pode remover automaticamente os zeros à esquerda e alterar formatações, o que compromete códigos e percentuais tributários.
==== Procedimento ====
* Selecione todas as colunas da planilha (**Ctrl + Shift + End**).
* Clique com o botão direito e selecione **Formatar Células**.
* Escolha a opção **Texto**.
* Clique em **OK**.
==== Campos mais sensíveis a alteração automática do Excel ====
* **CST**
* **NCM**
* **CEST**
* **ALIQ. PIS**
* **ALIQ. COFINS**
* **COD. DA NATUREZA PIS/COFINS**
* **cClassTrib**
Caso esses campos permaneçam como **Geral** ou **Número**, o Excel poderá:
* Remover zeros à esquerda
* Alterar percentuais automaticamente
* Converter códigos em número científico
* Gerar inconsistências na criação do script
* Causar erros na atualização do banco de dados
⚠️ Sempre conferir se todas as colunas estão realmente como **TEXTO** antes de enviar o arquivo.
----
Após isso, enviar a planilha para a contabilidade conferir e ajustar os dados.
Quando a planilha retornar, seguir para as próximas etapas do processo.
----
===== 6. Procedimentos após retorno da planilha pela Contabilidade =====
Após a contabilidade devolver a planilha preenchida, seguir os passos abaixo antes de gerar e executar o script de atualização dos produtos.
----
===== 6.1 Conferência inicial da planilha =====
Antes de qualquer ajuste no banco, realizar uma conferência rápida:
* Verificar se as colunas obrigatórias estão preenchidas.
* Confirmar se os campos continuam no formato **Texto** (principalmente códigos com zero à esquerda).
* Validar se não existem linhas duplicadas do mesmo produto (**IDPRODUTO**) com informações divergentes.
⚠️ Caso o Excel tenha convertido algum campo automaticamente (removendo zeros à esquerda), corrigir antes de prosseguir.
----
===== 6.2 Identificar combinações de Grupo PIS/COFINS =====
O primeiro passo após o retorno da planilha é extrair as combinações únicas de Grupo PIS/COFINS, para cadastrar no banco de dados do cliente os grupos que ainda não existirem.
As combinações devem ser formadas com os seguintes campos:
* **ENTRADA_PIS_CST**
* **ENTRADA_COFINS_CST**
* **SAIDA_PIS_CST**
* **SAIDA_COFINS_CST**
* **COD. DA NATUREZA PIS/COFINS**
* **ALIQ. PIS**
* **ALIQ. COFINS**
Essa etapa é necessária para que, posteriormente, seja possível vincular corretamente cada produto ao seu respectivo grupo no momento da atualização.
**Para auxiliar na identificação das combinações únicas, pode-se utilizar ferramentas de IA (como ChatGPT) ou recursos do próprio Excel, solicitando a extração das combinações distintas com base nos campos acima.**
----
===== 6.3 Cadastro das combinações no banco de dados =====
Com as combinações identificadas:
* Conferir no banco do cliente quais grupos já existem.
* Cadastrar no banco as combinações que estiverem faltando.
* Somente após isso seguir para a etapa de geração do script de atualização dos produtos.
⚠️ Importante: Não executar atualização de produtos apontando para grupos inexistentes, pois isso pode gerar inconsistência e falha no processo.
----
===== 7. Geração e Execução do Script de Atualização (Excel → IBExpert) =====
Com os **Grupos de PIS/COFINS** já cadastrados no banco de dados do cliente, iremos gerar o script de atualização através do Excel.
⚠️ Importante: Realizar as validações primeiro em um **backup do banco do cliente**. Após confirmar que os resultados ficaram corretos, executar os scripts no banco de **produção**.
----
===== 7.1 Inserir a coluna do Script no Excel =====
* Adicionar uma **última coluna vazia** na planilha.
* Essa coluna será utilizada para gerar automaticamente os comandos SQL.
----
===== 7.2 Aplicar a fórmula para gerar o SQL =====
* Cole a fórmula abaixo na **primeira linha** da nova coluna.
* Replicar a fórmula para todas as demais linhas da planilha.
="UPDATE TESTPRODUTO SET CODNCM = '"&
SE(ARRUMAR(C2)="";"";TEXTO(VALOR(ARRUMAR(C2));"00000000"))&
"', CODCEST = '"&
SE(ARRUMAR(D2)="";"";TEXTO(VALOR(ARRUMAR(D2));"0000000"))&
"', CCLASSTRIB_IBS_CBS = '"&
SE(ARRUMAR(O2)="";"";TEXTO(VALOR(ARRUMAR(O2));"000000"))&
"' WHERE IDPRODUTO = "&VALOR(A2)&"; "&
"UPDATE TESTPRODUTOEMPRESA T SET IDGRUPOPISCOFINS = COALESCE(("&
"SELECT FIRST 1 G.IDGRUPOPISCOFINS FROM TESTGRUPOPISCOFINS G WHERE G.EMPRESA = 1 "&
"AND LPAD(TRIM(G.ENTRADA_PIS_CST),2,'0') = '"&SE(ARRUMAR(H2)="";"99";TEXTO(VALOR(ARRUMAR(H2));"00"))&"' "&
"AND LPAD(TRIM(G.ENTRADA_COFINS_CST),2,'0') = '"&SE(ARRUMAR(I2)="";"99";TEXTO(VALOR(ARRUMAR(I2));"00"))&"' "&
"AND LPAD(TRIM(G.SAIDA_PIS_CST),2,'0') = '"&SE(ARRUMAR(J2)="";"99";TEXTO(VALOR(ARRUMAR(J2));"00"))&"' "&
"AND LPAD(TRIM(G.SAIDA_COFINS_CST),2,'0') = '"&SE(ARRUMAR(K2)="";"99";TEXTO(VALOR(ARRUMAR(K2));"00"))&"'"&
SE(OU(N2="";N2=0);
"";
" ORDER BY CASE WHEN COALESCE(G.SAIDA_NATUREZA_RECEITA_ID,0) = COALESCE(("&
"SELECT FIRST 1 N2.CODIGO FROM TESTNATUREZARECEITA N2 WHERE N2.CODIGONATUREZA = "&N2&
"),0) THEN 0 ELSE 1 END"
)&
"), T.IDGRUPOPISCOFINS) "&
"WHERE T.EMPRESA = 1 AND T.IDPRODUTO = "&VALOR(A2)&";"
⚠️ Atenção: Caso a ordem das colunas da planilha seja alterada, é necessário ajustar as referências de células da fórmula (ex.: C2, D2, H2, I2, J2, K2, N2, O2).
----
===== 7.3 Copiar e executar o script no IBExpert =====
* Após replicar a fórmula, copie todas as células geradas (coluna do script).
* Cole os comandos no executor de scripts do **IBExpert**.
* Execute o script para atualizar os dados no sistema.
----
===== 7.4 Validação do resultado =====
* Conferir cadastros de produtos atualizados (NCM, CEST, cClassTrib e Grupo PIS/COFINS).
* Validar se não houve produtos sem grupo vinculado.
* Confirmar se as informações ficaram corretas antes de executar em produção.