Anexo 1: Devolução 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.