Anexo 1: Devolução


Diretamente no Systax Engine é possivel desfazer uma operação, convertida em operação de "devolução", para isso basta indicar no genérico do cabeçalho a marcação "finNFe=4".

Fazendo isso ao requisitar uma chamada será pesquisada uma regra no cockpit ou on demand e a regra será convertida em operação de devolução.

Além disso, é possivel enviar no campo "cData" o XML da nota original, ou ainda este XML convertido em "base64", e desta forma na requisição não será feita a pesquisa de regra somente será convertido os dados do XML, ou convertido em base64, em dados de devolução.

 

  • Devolução com busca de regra no Cockpit:


Operações de cenários de entrada (TPNF=0)

Retorno CFOP:

Para os cenários de entrada, temos as seguintes trocas de CFOP nas operações de devolução:

se (CFOP da regra encontrada = 5101 ou 5102) e (perfilDest diferente de 1) Trocar para CFOP 5202
se (CFOP da regra encontrada = 5101) e (perfilDest contem 1) Trocar para CFOP 5202
se (CFOP da regra encontrada = 6101 ou 6102) e (perfilDest diferente de 1) Trocar para CFOP 6202
se (CFOP da regra encontrada = 5401 ou 5403 ou 5405) e (perfilDest diferente de 1) Trocar para CFOP 5411
se (CFOP da regra encontrada = 6401 ou 6403) e (perfilDest diferente de 1) Trocar para CFOP 6411
se (CFOP da regra encontrada = 7101 ou 7102) Trocar para CFOP 7202
se (CFOP da regra encontrada = 6409 ou 6152) e (perfilDest diferente de 1) Trocar para CFOP 6209
se (CFOP da regra encontrada = 5409 ou 5152) e (perfilDest diferente de 1) Trocar para CFOP 5209
se (CFOP_Entrada na regra = 1556) Trocar para CFOP 5556
se (CFOP_Entrada na regra = 2556) Trocar para CFOP 6556
se (CFOP_Entrada na regra = 1407) Trocar para CFOP 5413
se (CFOP_Entrada na regra = 2407) Trocar para CFOP 6413
se (CFOP_Entrada na regra = 1551) Trocar para CFOP 5553
se (CFOP_Entrada na regra = 2551) Trocar para CFOP 6553
se (CFOP_Entrada na regra = 1406) Trocar para CFOP 5412
se (CFOP_Entrada na regra = 2406) Trocar para CFOP 6412
se (CFOP_Entrada na regra = 1653) Trocar para CFOP 5662
se (CFOP_Entrada na regra = 2653) Trocar para CFOP 6662


Retorno Bloco IPI:

Se a operação original houver IPI, na devolução não será retornado o bloco IPI e sim o bloco "impostoDevol", com os campos abaixo para indicar os dados de devolução do tribuo IPI:

Tag Valor
pDevol 100.00
vIPIDevol valor do vIPI do bloco oficial

 

A informação do "vIPIDevol" também será concatenada na tag "infAdProd".

Ainda sobre o IPI existe uma configuração chamada "federalDevolucao" que se estiver ativa , o bloco impostoDevol será suprimido e nesse caso o bloco oficial do IPI será retornado com a seguinte troca de CST:

se CFOP definido começar com '1' ou '2' Trocar para CST 49
se CFOP definido começar com '5' ou '6' Trocar para CST 99

 

Importante ressaltar que no bloco do totalizador, o valor do IPI será replicado na tag de "vIPIDevol" ao invés da tag "vIPI".
 

Retorno Bloco PIS/COFINS:

Para o retorno de PIS e COFINS, será mantido os blocos com os devidos cálculos.

Caso a configuração "federalDevolucao" esteja ativa no cockpit, haverá a seguinte troca de CST:

se CFOP definido começar com '5' ou '6' Trocar para CST 49

OBS: O retorno das demais informações desse bloco são mantidas.
 

Operações de cenários de saída (TPNF=1)

Retorno CFOP:

Para os cenários de saída, temos as seguintes trocas de CFOP nas operações de devolução:

se (CFOP da regra encontrada = 5101) e (perfilDest diferente de 1 ) Trocar para CFOP 1201
se (CFOP da regra encontrada = 6101 ou 6107) e (perfilDest diferente de 1 ) Trocar para CFOP 2201
se (CFOP da regra encontrada = 5102) e (perfilDest diferente de 1 ) Trocar para CFOP 1202
se (CFOP da regra encontrada = 5117 ou 5910 ou 5120 ou 5118 ou 5119) e (CST diferente de 10, 30 , 70 e 60) e (perfilDest diferente de 1 ) Trocar para CFOP 1202
se (CFOP da regra encontrada = 6102 ou 6108) e (perfilDest diferente de 1 ) Trocar para CFOP 2202
se (CFOP da regra encontrada = 6108) e (marcação no generico do item CFOP=2949) Trocar para CFOP 2949
se (CFOP da regra encontrada = 6117 ou 6910 ou 6120 ou 6118 ou 6119) e (CST diferente de 10, 30, 70) e (perfilDest diferente de1) Trocar para CFOP 2202
se (CFOP da regra encontrada = 5401) Trocar para CFOP 1410
se (CFOP da regra encontrada = 6401) Trocar para CFOP 2410
se (CFOP da regra encontrada = 5403 ou 5405) Trocar para CFOP 1411
se (CFOP da regra encontrada = 5117 ou 5910 ou 5120 ou 5118 ou 5119) e (CST = 10, 30, 70 e 60) e (perfilDest diferente de 1) Trocar para CFOP 1411
se (CFOP da regra encontrada = 6401 ou 6403) Trocar para CFOP 2411
se (CFOP da regra encontrada = 6117 ou 6910 ou 6120 ou 6118 ou 6119) e (CST = 10, 30 e 70) e (perfilDest diferente de 1) Trocar para CFOP 2411
se (CFOP da regra encontrada = 7101 ou 7102) Trocar para CFOP 3210
se (CFOP da regra encontrada = 5409 ou 5152) Trocar para CFOP 1209
se (CFOP da regra encontrada = 6409 ou 6152) Trocar para CFOP 2209
se (CFOP da regra encontrada = 5922) Trocar para CFOP 1949
se (CFOP da regra encontrada =6922 ou 6949) Trocar para CFOP 2949
se (CFOP da regra encontrada =5949) Trocar para CFOP 1949
se (CFOP da regra encontrada =5106) Trocar para CFOP 1202
se (CFOP da regra encontrada =6106) Trocar para CFOP 2202
se (CFOP da regra encontrada =6109) Trocar para CFOP 2203
se (CFOP da regra encontrada =6110) Trocar para CFOP 2204


Retorno Bloco ICMS/ST:

Na tag "infAdProd" será concatenado as seguintes informações:

1) NOTA DE DEVOLUÇÃO

2) Base de ICMS Substituicao XX.XX - Onde XX.XX corresponde ao valor do vBCST do Bloco oficial do ICMS

3) Valor do ICMS Substituicao XX.XX - Onde XX.XX corresponde ao valor do vICMSST do Bloco oficial do ICMS

Para as operações de transferência (natureza de operação 107 ou 108), quando o CST da operação for 10,30 ou 70, será trocado para 90.

 

Retorno Bloco IPI:

Sempre que no bloco oficial do IPI houver a tag "vIPI" preenchida com valor maior que zero, retornará o bloco do impostoDevol, com as seguintes tags:

Tag Valor
pDevol 100.00
vIPIDevol valor do vIPI do bloco oficial

A informação do "vIPIDevol" também será concatenada na tag "infAdProd". Porém, se a configuração "federalDevolucao" estiver ativa no cockpit, o bloco impostoDevol será suprimido e no bloco oficial do IPI haverá a seguinte troca de CST:

se CFOP definido começar com '1' ou '2' Trocar para CST 49
se CFOP definido começar com '5' ou '6' Trocar para CST 99

OBS: No bloco do totalizador, o valor do IPI será replicado na tag de "vIPIDevol" ao invés da tag "vIPI".
 

Retorno Bloco PIS/COFINS:

 

Para o retorno de PIS e COFINS, será mantido os blocos com os devidos cálculos.

Caso a configuração "federalDevolucao" esteja ativa no cockpit, haverá a seguinte troca de CST:

se regra com CST saida = 01 ou 02 ou 03 ou 05 Trocar para CST 50
se regra com CST saida = 04 ou 06 Trocar para CST 73
se regra com CST saida = 09 Trocar para CST 72
se regra com CST saida = 07 Trocar para CST 71
se regra com CST saida = 08 Trocar para CST 74
se regra com CST saida = 49 Trocar para CST 98

Para o caso em específico onde, independente do CST, o CFOP da operação seja 1949 ou 2949, será trocado o CST para 98.

OBS: O retorno das demais informações desse bloco são mantidas.

 

 

  • Devolução por XML:

O retorno é exatamente os mesmos valores constantes no XML, o único cálculo que o motor fará é em relação a quantidade devolvida, pois como sabemos, algumas vezes uma devolução pode ocorrer de forma parcial. Temos 3 formas de fazer a devolução parcial, porém em produção temos apenas a indicada a seguir, as demais estão em desenvolvimento.

Para a devolução parcial da quantidade do item, basta preencher um item na chamada, com a indicação da tag “ID” com o mesmo valor do “ID” do item do XML, e no campo “qTrib” da chamada indicar a quantidade a ser devolvido, com isso o motor de cálculo vai dividir os valores do XML pela quantidade do item, e depois multiplicar pela quantidade que será devolvida, por exemplo:

Uma nota fiscal com 10 produtos diferentes, ou seja, contém 10 itens no XML, e um dos produtos, ID 1 da nota, foi comprado uma quantidade de 5 (qTrib=5), mas a sua devolução será de apenas a quantidade de 30, então na chamada deve ser indicado um item com o ID “1” e o qTrib=1, assim o motor de cálculo vai calcular esse item:

Dados do XML:

ID = 1
qTrib = 5
vBC = 820,00
vICMS = 164,00

Dados enviado na chamada:

ID = 1
qTrib = 1

Retorno do motor de cálculo desse item:

vBC = (vBC do XML/qTrib do XML)*qTrib da chamada
vBC = (820/5)*1
vBC = 164,00
vICMS = (vICMS do XML/qTrib do XML)*qTrib da chamada
vICMS = (147,60/5)*1
vICMS = 29,52

Caso a quantidade a ser devolvida seja a mesma do XML, não é necessário preencher nenhum campo da chamada, exceto data de cálculo que é obrigatório.