Descrição: No módulo de faturamento, ao enviar para a Sefaz uma nota de devolução com a referencia sendo feita por chave avulsa, apresenta a seguinte rejeição:
Error: 50000 Message:
CHAVE NFE: 35220559418806003243550010003250981619463211
DATA RECEBIMENTO: 20220519 17:54:47.000
STATUS: 225
MOTIVO: RejeiCAo: Falha no Schema XML do lote de NFe
Proc: LX_RECEBIMENTO_PROTOCOLO_NFE_SEFAZ
Verificando o XML pelo validador Validador NF-e - TecnoSpeed, consta a seguinte mensagem:
Falha de Esquema: O elemento pai: 'impostoDevol' não estava esperando o elemento 'pDevol'. O elemento esperado é: 'IPI'.
Causa: Este incidente ocorre, pois a Tag <pDevol> aparece em duplicidade no XML da nota fiscal
Ao referenciar uma chave avulsa, ou seja, a nota de origem sendo vinculada na tabela FATURAMENTO_NF_AVULSA_REFERENCIADA, o valor da tag <pDevol> deve ser 0.00. Já quando a nota de origem constar no sistema, o valor da tag deverá ser calculado com base nas informações da tabela ENTRADAS_ITEM e FATURAMENTO_ENTRADA_DEVOLUCAO.
Exemplo de como aparece a duplicidade no XML:
<impostoDevol>
<pDevol>0.00</pDevol>
<pDevol>38.00</pDevol>
<IPI>
<vIPIDevol>0.00</vIPIDevol>
</IPI>
</impostoDevol>
Solução: Para correção desse incidente, realize o seguinte processo com o script a seguir, que trará como a tag esta sendo gerada:
Rode cada select separadamente pra ver em quais consultas está trazendo duas vezes, o correto é trazer um resultado;
-- ALTERAR TODOS OS WHERE, PREENCHENDO O DADO DA NOTA QUE ESTÁ COM ERRO DA TAG PDEVOL DUPLICADA --(ATÉ NA ONDE PEDE NOTA DE ENTRADA OU SAIDA, INFORMAR A NOTA COM ERRO NÃO A NOTA DE ORIGEM. SELECT pDevol AS "pDevol" FROM ( --SELECT CONVERT(NUMERIC(3,2),(B.QTDE_DEVOLVIDA/C.QTDE_ITEM))*100 AS "pDevol" --#62# --#88# SELECT CONVERT(NUMERIC(5,2),(SUM(B.QTDE_DEVOLVIDA)/SUM(C.QTDE_ITEM)))*100 AS "pDevol" --#90# FROM W_IMPRESSAO_NFE_ITENS AS A JOIN FATURAMENTO_ENTRADA_DEVOLUCAO AS B ON A.NF=B.NF_SAIDA AND A.SERIE_NF=B.SERIE_NF AND A.FILIAL =B.FILIAL AND A.ITEM_IMPRESSAO=B.ITEM_IMPRESSAO_SAIDA AND A.SUB_ITEM_TAMANHO=B.SUB_ITEM_SAIDA JOIN ENTRADAS_ITEM AS C ON C.NF_ENTRADA=B.NF_ENTRADA AND C.SERIE_NF_ENTRADA=B.SERIE_NF_ENTRADA AND C.NOME_CLIFOR=B.NOME_CLIFOR AND C.ITEM_IMPRESSAO=B.ITEM_IMPRESSAO_ENTRADA AND C.SUB_ITEM_TAMANHO=B.SUB_ITEM_ENTRADA WHERE A.NOME_CLIFOR = '' AND A.ITEM_IMPRESSAO = '' AND A.SUB_ITEM_TAMANHO = '' AND A.NF = '' AND A.SERIE_NF ='' UNION SELECT CONVERT(NUMERIC(5,2),(SUM(B.QTDE_DEVOLVIDA)/SUM(B.QTDE_ITEM))*100) AS "pDevol" --#70# FROM W_IMPRESSAO_NFE_ITENS AS A JOIN ( SELECT CASE WHEN Isnull(FT.CODIGO_CLIENTE_VAREJO, '') = '' THEN FED.NOME_CLIFOR ELSE CV.CLIENTE_VAREJO END AS NOME_CLIFOR --#118# ,FED.NF_ENTRADA , FED.SERIE_NF_ENTRADA , FED.ITEM_IMPRESSAO_ENTRADA , FED.SUB_ITEM_ENTRADA,SUM(FED.QTDE_DEVOLVIDA) AS QTDE_DEVOLVIDA ,SUM(FI.QTDE_ITEM) AS QTDE_ITEM FROM FATURAMENTO_ENTRADA_DEVOLUCAO AS FED JOIN FATURAMENTO_ITEM AS FI ON FED.FILIAL = FI.FILIAL AND FED.NF_SAIDA = FI.NF_SAIDA AND FED.SERIE_NF= FI.SERIE_NF AND FED.SUB_ITEM_SAIDA = FI.SUB_ITEM_TAMANHO AND FED.ITEM_IMPRESSAO_SAIDA = FI.ITEM_IMPRESSAO --#118# JOIN FATURAMENTO AS FT ON FT.NF_SAIDA = FI.NF_SAIDA AND FT.SERIE_NF = FI.SERIE_NF AND FT.FILIAL = FI.FILIAL LEFT JOIN CLIENTES_VAREJO CV ON CV.CODIGO_CLIENTE = FT.CODIGO_CLIENTE_VAREJO --#118# GROUP BY FED.NOME_CLIFOR ,FED.NF_ENTRADA , FED.SERIE_NF_ENTRADA , FED.ITEM_IMPRESSAO_ENTRADA , FED.SUB_ITEM_ENTRADA,CV.CLIENTE_VAREJO,FT.CODIGO_CLIENTE_VAREJO ) AS B /*#39#*/ ON A.NF=B.NF_ENTRADA AND A.SERIE_NF=B.SERIE_NF_ENTRADA AND A.NOME_CLIFOR =B.NOME_CLIFOR AND A.ITEM_IMPRESSAO=B.ITEM_IMPRESSAO_ENTRADA AND A.SUB_ITEM_TAMANHO=B.SUB_ITEM_ENTRADA WHERE A.NOME_CLIFOR = '' AND A.ITEM_IMPRESSAO = '' AND A.SUB_ITEM_TAMANHO = '' AND A.NF = '' AND A.SERIE_NF = '' --and IPI > 0 /*#27#*/ UNION --#88# SELECT 0.00 AS "pDevol" FROM ENTRADAS_NF_AVULSA_REFERENCIADA WHERE NF_ENTRADA='' AND SERIE_NF_ENTRADA = '' AND NOME_CLIFOR = '' UNION --#89# SELECT 0.00 AS "pDevol" FROM FATURAMENTO_NF_AVULSA_REFERENCIADA WHERE NF_SAIDA='' AND SERIE_NF = '' AND FILIAL = '' --#88# UNION --#110#-Início SELECT top 1 0.00 AS "pDevol" FROM FATURAMENTO_ITEM_RELACIONADO WHERE NF_SAIDA = '' AND SERIE_NF = '' AND FILIAL = '' --#110#-Fim UNION --#93# SELECT 100.00 AS "pDevol" FROM ENTRADAS_ITEM LEFT JOIN FATURAMENTO_ENTRADA_DEVOLUCAO ON ENTRADAS_ITEM.NF_ENTRADA=FATURAMENTO_ENTRADA_DEVOLUCAO.NF_ENTRADA AND ENTRADAS_ITEM.SERIE_NF_ENTRADA=FATURAMENTO_ENTRADA_DEVOLUCAO.SERIE_NF_ENTRADA AND ENTRADAS_ITEM.NOME_CLIFOR=FATURAMENTO_ENTRADA_DEVOLUCAO.NOME_CLIFOR AND ENTRADAS_ITEM.ITEM_IMPRESSAO=FATURAMENTO_ENTRADA_DEVOLUCAO.ITEM_IMPRESSAO_ENTRADA AND ENTRADAS_ITEM.SUB_ITEM_TAMANHO=FATURAMENTO_ENTRADA_DEVOLUCAO.SUB_ITEM_ENTRADA WHERE ENTRADAS_ITEM.NF_ENTRADA='' AND ENTRADAS_ITEM.SERIE_NF_ENTRADA = '' AND ENTRADAS_ITEM.NOME_CLIFOR = '' AND ENTRADAS_ITEM.ITEM_IMPRESSAO = '' AND ENTRADAS_ITEM.SUB_ITEM_TAMANHO ='' AND FATURAMENTO_ENTRADA_DEVOLUCAO.NF_ENTRADA IS NULL --AND NFE_ITENS.CODIGO_FISCAL_OPERACAO IN ('1201','1202','1410','1411','5921','6921') --#107# AND NOT EXISTS ( SELECT top 1 * FROM ENTRADAS_NF_AVULSA_REFERENCIADA WHERE NF_ENTRADA='' AND SERIE_NF_ENTRADA = '' AND NOME_CLIFOR = '') --#107# --#93# UNION --#29# --LOJA --#82# Implementado o SUM SELECT CONVERT(NUMERIC(5,2), (SUM(A.QTDE_ITEM)/SUM(H.QTDE_ITEM))) * 100 AS "pDevol" FROM W_IMPRESSAO_NFE_ITENS A INNER JOIN FILIAIS B ON A.FILIAL = B.FILIAL INNER join LOJAS_VAREJO LV -- #95# on B.FILIAL = LV.FILIAL INNER JOIN LOJA_VENDA_PGTO C ON A.NF = C.NUMERO_FISCAL_TROCA AND A.SERIE_NF = C.SERIE_NF_ENTRADA AND LV.CODIGO_FILIAL = C.CODIGO_FILIAL --#95# INNER JOIN LOJA_VENDA D ON C.LANCAMENTO_CAIXA = D.LANCAMENTO_CAIXA AND C.CODIGO_FILIAL = D.CODIGO_FILIAL CROSS APPLY (SELECT DISTINCT TRO.CODIGO_FILIAL, TRO.TICKET, TRO.CODIGO_FILIAL_ORIGEM, TRO.TICKET_ORIGEM, TRO.DATA_VENDA_ORIGEM --#94# FROM LOJA_VENDA_TROCA_ORIGEM TRO WHERE TRO.CODIGO_FILIAL = D.CODIGO_FILIAL AND TRO.TICKET = D.TICKET AND TRO.DATA_VENDA = D.DATA_VENDA ) E --#84# #94# INNER JOIN LOJA_VENDA F ON E.TICKET_ORIGEM = F.TICKET AND E.CODIGO_FILIAL_ORIGEM = F.CODIGO_FILIAL AND F.DATA_VENDA = E.DATA_VENDA_ORIGEM --#94# INNER JOIN LOJA_VENDA_PGTO G ON F.LANCAMENTO_CAIXA = G.LANCAMENTO_CAIXA AND F.CODIGO_FILIAL = G.CODIGO_FILIAL INNER JOIN LOJA_NOTA_FISCAL_ITEM H ON G.NUMERO_FISCAL_VENDA = H.NF_NUMERO AND G.SERIE_NF_SAIDA = H.SERIE_NF AND G.CODIGO_FILIAL = H.CODIGO_FILIAL AND A.CODIGO_ITEM = H.CODIGO_ITEM -- #84# WHERE A.NOME_CLIFOR = '' AND A.ITEM_IMPRESSAO = '' AND A.SUB_ITEM_TAMANHO = '' AND A.NF = '' AND A.SERIE_NF = '' AND A.NF = '' --#84# AND A.SERIE_NF ='' --#84# --and IPI > 0 ) IPI_DEVOLUCAO FOR XML PATH(''), TYPE
1.1. Correção referente a versões anteriores a 01.24.030. Esse item é sanado na versão Service Pack 01.24 Hotfix 030 - Shopping - Linx - Rascunho - Linx Share
- Se a nota de origem existe no sistema e foi referenciada na aba devolução, só pode constar na tabela FATURAMENTO_ENTRADA_DEVOLUCAO;
- Se foi referenciada na aba OUTROS ou tem que estar na ENTRADAS_NF_AVULSA_REFERENCIADA ou FATURAMENTO_NF_AVULSA_REFERENCIADA;
3.1 - Se tiver em mais que uma tabela, está parametrizado incorretamente; - Se a nota foi referenciada na aba devolução, deletar as informações da tabela ENTRADAS_NF_AVULSA_REFERENCIADA e FATURAMENTO_NF_AVULSA_REFERENCIADA;
- Se foi referenciada na aba OUTROS deletar as informações da tabela FATURAMENTO_ENTRADA_DEVOLUCAO;
- Utilize o select e delete abaixo:
Select * from (Preencher com a tabela) where NF_ENTRADA = '' AND SERIE_NF_ENTRADA = '' AND NOME_CLIFOR = '' Begin tran Delete from (tabela que as informações será excluída) where NF_ENTRADA = '' AND SERIE_NF_ENTRADA = '' AND NOME_CLIFOR = '' commit