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.