Boa noite Onyx,
Você alterou o componente para que a tag <qVol> seja gerada com 2 casas decimais, correto?
Gerou o XML e mandou imprimir o DANFE, correto?
Foi impresso da forma que o seu cliente deseja, correto?
Depois assinou e tentou validar, correto?
Ocorreu erro na validação?
Com certeza sim, pois veja como esta definido no schema da SEFAZ essa tag:
<xs:element name="qVol" minOccurs="0">
<xs:annotation>
<xs:documentation>Quantidade de volumes transportados</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:pattern value="[0-9]{1,15}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Na linha:
<xs:pattern value="[0-9]{1,15}"/>
Esta claro que a tag <qVol> pode conter de 1 até 15 caracteres que estejam dentro do dominio [0-9], ou seja, somente dígitos.
Na linha a baixo é um patter de uma tag que aceita até 15 dígitos, sendo 13 de corpo (parte inteira) e 2 decimais.
<xs:pattern value="0|0\.[0-9]{2}|[1-9]{1}[0-9]{0,12}(\.[0-9]{2})?"/>
Deu para perceber bem a diferença.
Resumindo não ainda você fazer a alteração que você fez pois o Schema não vai aceitar um numero real onde se espera um numero inteiro.
Mas vamos em frente e atrás vem gente.
Mantenha a sua alteração e comente a linha que realiza a validação do XML, desta forma, não vai ocorrer o erro de validação e o XML vai ser enviado para a SEFAZ.
Veja a linha que deve ser comentada a baixo:
function TACBrNFe.Enviar(const ALote: String; Imprimir: Boolean; Sincrono: Boolean;
Zipado: Boolean): Boolean;
var
i: integer;
begin
WebServices.Enviar.Clear;
WebServices.Retorno.Clear;
(...)
NotasFiscais.Assinar;
// NotasFiscais.Validar; Linha comentada para não realizar a validação do XML antes do seu envio
Result := WebServices.Envia(ALote, Sincrono, Zipado);
(...)
end;
end;
Se a SEFAZ aceitar a tag <qVol> como sendo um numero real em vez de inteiro, podemos concluir duas coisas:
1. A SEFAZ não valida essa informação, ela simplesmente trata ela como sendo uma simples string com no máximo 15 caracteres.
2. A SEFAZ valida essa informação, logo os schemas disponibilizados por ela a anos esta errado a definição dessa tag.
Estou ansioso em saber se a nota foi autorizada ou não.