A rejeição 906 exige o preenchimento de todos os campos do grupo ICMSEfet:
Percentual de redução da base de cálculo efetiva (tag pRedBCEfet)
Valor da base de cálculo efetiva (tag vBCEfet)
Alíquota do ICMS efetiva (tag pICMSEfet)
Valor do ICMS efetivo (tag vICMSEfet)
Que são informação não obrigatórias e nem temos conhecimento de como deve ser informado, assim entendemos que a validação não deveria estar sendo realizada,
A funcionalidade que permite a geração destas informações é a: ICMSEfet(...)
http://flexdocs.com.br/guianfe/gerarNFe ... SEfet.html
A funcionalidade está disponível a partir da versão 4.05a da DLL, veja http://www.flexdocs.com.br/guiaNFe/guia ... 16002.html
Para evitar o acréscimo de 4 novos parâmetros na funcionalidade icms400, optamos por criar a nova funcionalidade icmsEfet, assim quem precisar utiliza-la deve implementar uma condição:
if necessário gerar o grupo ICMSEfet e (CST=60 ou CST=500)
icms = util.icmsEfet(...) // utiliza o ICMSEfet para gerar o grupo ICM
// o grupo ICMSEfet só vai ser gerado se forem informado os valores.
else
icms = util.icms400(...) // utiliza o icms400 para gerar o grupo ICMS - situação que não precisa do ICMSEfet
end