NFLoteEnvio getLoteAssinado ( final NFLoteEnvio lote ) throws Exception { // adiciona a chave e o dv antes de assinar for ( final NFNota nota : lote . getNotas ( ) ) { final NFGeraChave geraChave = new NFGeraChave ( nota ) ; nota . getInfo ( ) . getIdentificacao ( ) . setCodigoRandomico ( StringUtils . defaultIfBlank ( nota . getInfo ( ) . getIdentificacao ( ) . getCodigoRandomico ( ) , geraChave . geraCodigoRandomico ( ) ) ) ; nota . getInfo ( ) . getIdentificacao ( ) . setDigitoVerificador ( geraChave . getDV ( ) ) ; nota . getInfo ( ) . setIdentificador ( geraChave . getChaveAcesso ( ) ) ; } // assina o lote final String documentoAssinado = new AssinaturaDigital ( this . config ) . assinarDocumento ( lote . toString ( ) ) ; final NFLoteEnvio loteAssinado = new DFParser ( ) . loteParaObjeto ( documentoAssinado ) ; // verifica se nao tem NFCe junto com NFe no lote e gera qrcode (apos assinar mesmo, eh assim) int qtdNF = 0 , qtdNFC = 0 ; for ( final NFNota nota : loteAssinado . getNotas ( ) ) { switch ( nota . getInfo ( ) . getIdentificacao ( ) . getModelo ( ) ) { case NFE : qtdNF ++ ; break ; case NFCE : final NFGeraQRCode geraQRCode = new NFGeraQRCode ( nota , this . config ) ; nota . setInfoSuplementar ( new NFNotaInfoSuplementar ( ) ) ; nota . getInfoSuplementar ( ) . setQrCode ( geraQRCode . getQRCode ( ) ) ; qtdNFC ++ ; break ; default : throw new IllegalArgumentException ( String . format ( "Modelo de nota desconhecida: %s" , nota . getInfo ( ) . getIdentificacao ( ) . getModelo ( ) ) ) ; } } // verifica se todas as notas do lote sao do mesmo modelo if ( ( qtdNF > 0 ) && ( qtdNFC > 0 ) ) { throw new IllegalArgumentException ( "Lote contendo notas de modelos diferentes!" ) ; } return loteAssinado ; }
Retorna o Lote assinado .