Boa tarde,
Ao gerar uma NFe de devolução e preencher a tag <vDevTrib>, conforme especificado na NT_2025.002_v1.20, esse valor deve ser deduzido dos campos vIBSUF, vIBSMun e vCBS, seguindo a fórmula abaixo:
Valor do IBS Estadual (vIBSUF) = Base de Cálculo × Alíquota (gIBSCBS/vBC × pIBSUF) - vDif - vDevTrib
Dessa forma, neste exemplo, os campos vIBSUF, vIBSMun e vCBS resultarão em valor zero. No entanto, é obrigatório que a tag <vDevTrib> esteja presente no grupo de totais <IBSCBSTot>.
Na unit ACBRNFe.XMLWriter, dentro da função Gerar_IBSCBSTot, já existe uma verificação para gerar o grupo gCBS caso haja valor de CBS ou diferimento. Seria necessário incluir também a verificação de valor em vDevTrib, garantindo que o grupo gCBS seja gerado corretamente mesmo quando apenas esse campo estiver preenchido.
Exemplo de implementação sugerida:
if (IBSCBSTot.gIBS.vIBS > 0) or
(IBSCBSTot.gIBS.gIBSUFTot.vDif > 0) or (IBSCBSTot.gIBS.gIBSMunTot.vDif > 0) or
(IBSCBSTot.gIBS.gIBSUFTot.vDevTrib > 0) or (IBSCBSTot.gIBS.gIBSMunTot.vDevTrib > 0) then
Result.AppendChild(Gerar_IBSCBSTot_gIBS(IBSCBSTot.gIBS));
if (IBSCBSTot.gCBS.vCBS > 0) or (IBSCBSTot.gCBS.vDif > 0)
or (IBSCBSTot.gCBS.vDevTrib > 0) then
Result.AppendChild(Gerar_IBSCBSTot_gCBS(IBSCBSTot.gCBS));
Atualmente, sem essa verificação adicional, a tag <gCBS> não é gerada dentro de <IBSCBSTot>, o que impede que o valor de vDevTrib seja incluído corretamente no grupo de totais.
Segue em anexo a unit alterada, para validação.
Muito obrigada
ACBrNFe.XmlWriter.pas