14 – Definições de Busca de Regras
Para a busca de regras da reforma tributária, temos algumas definições que diferem da busca de regras do motor atual.
Abaixo segue essas definições, na ordem de prioridade do motor:
A) Busca de regra geral por operação
Primeiramente o motor considera a busca de regras gerais por operação, onde é feito uma busca de regras considerando os parâmetros do cenário indicado na chamada e o código do produto, ncm e origem = vazio.
Para identificar esse tipo de retorno, é retornado no campo genérico do retorno a marcação = “buscaRT=regraGeralOperacao”.
Caso não encontre regra nessa etapa, segue para a próxima busca.
B) Busca de regra específica por código de produto ou ean
Nessa etapa o motor irá buscar regras específicas, aquelas cujo produto, ean e origem são preenchidos na regra, considerando as demais informações enviadas na requisição. Nesse tipo de regra, se encaixa os seguintes critérios, respeitando a seguinte ordem:
1) Busca por código de produto informado na chamada = É necessário que a configuração “AtivaBuscaCodProd” esteja ativa no cockpit; Se não encontrar, segue para o item 2:
2) Busca por ean informado na chamada = É necessário que a configuração “AtivaBuscaEan” esteja ativa no cockpit;
Nota: Todos esses critérios de buscam, também segue o critério de agrupamento de origem. Vide Tópico 20.
Nas 2 hipóteses acima, caso seja encontrado uma regra específica, seja por código de produto ou ean, é feito antes uma busca na tabela de “produtos com regra geral”, para aquele código ou ean e cenário encontrado. Caso encontre um registro ativo e vigente nessa tabela, é feito uma comparação entre a data de criação desse registro e a data de criação da regra especifica encontrada.
Se a data de criação da regra especifica seja mais recente, é consumido essa regra.
Caso o registro da tabela “Produtos com regra geral” for mais recente, é feito uma busca de regra geral e entregue no retorno caso encontre. Se não encontrar a regra geral, é consumido a regra especifica encontrada anteriormente.
Para identificar esses retornos, é retornado no campo genérico do retorno as seguintes marcações, a depender da situação:
Se consumido regra específica por código: “buscaRT=regraEspecificaCodigo”.
Se consumido regra específica por ean: “buscaRT=regraEspecificaEan”.
Se consumido regra geral por código: “buscaRT=regraGeralCodigo”.
Se consumido regra geral por ean: “buscaRT=regraGeralEan”.
Caso não encontre regra nessa etapa, segue para a próxima busca.
C) Busca por regra geral
Nessa etapa, quando não é encontrado regras específicas da etapa acima, será validado se o código de produto ou ean informado na chamada + o cenário da operação, consta na tabela de “produtos com regra geral”.
Caso encontre um registro ativo e vigente nessa tabela, é feito uma busca de regra geral e caso encontre é consumido essa regra.
Para identificar esse tipo de retorno, é retornado no campo genérico do retorno as seguintes marcações:
Se consumido regra geral por código: “buscaRT=regraGeralCodigo”.
Ou
Se consumido regra geral por ean: “buscaRT=regraGeralEan”.
Caso não encontre regra nessa etapa, segue para a próxima busca.
D) Busca de regra ondemand por código EAN
Nessa etapa, é feito uma busca de regras ondemand, considerando o ean e origem indicado na chamada + os parâmetros do cenários.
Referente aos parâmetros do cenário, pode ser considerado o de/para de perfis ou não. Caso não haja o de/para para os perfis indicado, não é impedimento para essa busca.
Não havendo de/para de cenários do cenário RT para a busca ondemand, é retornando no campo genérico do retorno a marcação: deparaRT=N.
Em relação ao ean indicado, é necessário que haja cadastrado na base interna do Supermercado Systax. (obs: não é necessário que o cliente tenha cadastrado em sua base). Se não houver cadastrado na base interna do Supermercado Systax, não será calculado regra nessa etapa.
Para que essa busca seja feita, é necessário que a configuração “calculoOnDemand” esteja ativo na tela de “Configuração Tax Engine” ou que seja informado na tag “genérico” do cabeçalho da requisição a marcação: “busca=4”.
Para identificar esse tipo de retorno, é retornado no campo genérico do retorno as seguintes marcações:
Se regra ondemand for geral: “buscaRT=ondemandGeralEan”.
Ou
Se regra ondemand for específica: “buscaRT=ondemandEspecificalEan”.
Caso não encontre regra nessa etapa, segue para a próxima busca.
E) Busca de regra especÍfica por NCM
Nessa etapa o motor irá buscar regras específicas considerando a NCM e origem informado na chamada (também considerando se necessário o agrupamento de origem).
Nesse tipo de busca é necessário que a configuração “AtivaBuscaNCM” esteja ativa no cockpit.
Nessa busca, caso seja encontrado uma regra específica é feito antes uma busca na tabela de “produtos com regra geral”, para aquela NCM e cenário encontrado. Caso encontre um registro ativo e vigente nessa tabela, é feito uma comparação entre a data de criação desse registro e a data de criação da regra especifica encontrada.
Se a data de criação da regra especifica seja mais recente, é consumido essa regra.
Caso o registro da tabela “Produtos com regra geral” for mais recente, é feito uma busca de regra geral e entregue no retorno caso encontre. Se não encontrar a regra geral, é consumido a regra especifica encontrada anteriormente.
Para identificar esses retornos, é retornado no campo genérico do retorno as seguintes marcações, a depender da situação:
Se consumido regra específica por NCM: “buscaRT=regraEspecificaNCM”.
Ou
Se consumido regra geral por NCM: “buscaRT=regraGeralNCM”.
Caso não encontre regra nessa etapa, segue para a próxima busca.
F) Busca de regra geral por NCM
Nessa etapa, quando não é encontrado regras específicas por NCM da etapa acima, será validado se a NCM informado na chamada + o cenário da operação, consta na tabela de “produtos com regra geral”.
Caso encontre um registro ativo e vigente nessa tabela, é feito uma busca de regra geral e caso encontre é consumido essa regra.
Para identificar esse tipo de retorno, é retornado no campo genérico do retorno a marcação: “buscaRT=regraGeralNCM”.
Caso não encontre regra nessa etapa, segue para a próxima busca.
G) Busca de regra ondemand por NCM
Nessa etapa, é feito uma busca de regras ondemand, considerando a NCM e origem indicado na chamada + os parâmetros do cenários.
Referente aos parâmetros do cenário, pode ser considerado o de/para de perfis ou não. Caso não haja o de/para para os perfis indicado, não é impedimento para essa busca.
Não havendo de/para de cenários do cenário RT para a busca ondemand, é retornando no campo genérico do retorno a marcação: deparaRT=N.
Em relação a NCM indicada é necessário que haja cadastrado na base interna do Supermercado Systax. (obs: não é necessário que o cliente tenha cadastrado em sua base). Se não houver cadastrado na base interna do Supermercado Systax, não será calculado regra nessa etapa.
Para que essa busca seja feita, é necessário que a configuração “calculoOnDemand” esteja ativo na tela de “Configuração Tax Engine” ou que seja informado na tag “genérico” do cabeçalho da requisição a marcação: “busca=4”.
Para identificar esse tipo de retorno, é retornado no campo genérico do retorno as seguintes marcações:
Se regra ondemand for geral: “buscaRT=ondemandGeralNCM”.
Ou
Se regra ondemand for específica: “buscaRT=ondemandEspecificalNCM”.
Todas as etapas acima indicadas são as que o motor percorre para retornar uma regra válida e vigente na data do cálculo.
Caso não seja encontrado regra da reforma, os blocos serão suprimidos.