@@ -17,10 +17,10 @@ public static class ExtNFe
1717 /// <param name="nfe"></param>
1818 /// <param name="arquivoXml">arquivo XML</param>
1919 /// <returns>Retorna uma NFe carregada com os dados do XML</returns>
20- public static Classes . NFe CarregarDeArquivoXml ( this Classes . NFe nfe , string arquivoXml )
20+ public static Classes . NFe CarregarDeArquivoXml ( this Classes . NFe nfe , string arquivoXml , bool ignorarOrdenacaoElementos = false )
2121 {
2222 var s = FuncoesXml . ObterNodeDeArquivoXml ( typeof ( Classes . NFe ) . Name , arquivoXml ) ;
23- return FuncoesXml . XmlStringParaClasse < Classes . NFe > ( s ) ;
23+ return FuncoesXml . XmlStringParaClasse < Classes . NFe > ( s , ignorarOrdenacaoElementos ) ;
2424 }
2525
2626 /// <summary>
@@ -39,10 +39,10 @@ public static string ObterXmlString(this Classes.NFe nfe)
3939 /// <param name="nfe"></param>
4040 /// <param name="xmlString"></param>
4141 /// <returns>Retorna um objeto do tipo NFe</returns>
42- public static Classes . NFe CarregarDeXmlString ( this Classes . NFe nfe , string xmlString )
42+ public static Classes . NFe CarregarDeXmlString ( this Classes . NFe nfe , string xmlString , bool ignorarOrdenacaoElementos = false )
4343 {
4444 var s = FuncoesXml . ObterNodeDeStringXml ( typeof ( Classes . NFe ) . Name , xmlString ) ;
45- return FuncoesXml . XmlStringParaClasse < Classes . NFe > ( s ) ;
45+ return FuncoesXml . XmlStringParaClasse < Classes . NFe > ( s , ignorarOrdenacaoElementos ) ;
4646 }
4747
4848 /// <summary>
@@ -65,7 +65,7 @@ public static Classes.NFe Valida(this Classes.NFe nfe, ConfiguracaoServico cfgSe
6565 {
6666 if ( nfe == null ) throw new ArgumentNullException ( "nfe" ) ;
6767
68- var versao = ( Decimal . Parse ( nfe . infNFe . versao , CultureInfo . InvariantCulture ) ) ;
68+ var versao = Decimal . Parse ( nfe . infNFe . versao , CultureInfo . InvariantCulture ) ;
6969
7070 var xmlNfe = nfe . ObterXmlString ( ) ;
7171 var config = cfgServico ?? ConfiguracaoServico . Instancia ;
@@ -93,7 +93,7 @@ public static Classes.NFe Assina(this Classes.NFe nfe, ConfiguracaoServico cfgSe
9393 #region Define cNF
9494
9595 var tamanhocNf = 9 ;
96- var versao = ( decimal . Parse ( nfeLocal . infNFe . versao , CultureInfo . InvariantCulture ) ) ;
96+ var versao = decimal . Parse ( nfeLocal . infNFe . versao , CultureInfo . InvariantCulture ) ;
9797 if ( versao >= 2 ) tamanhocNf = 8 ;
9898 nfeLocal . infNFe . ide . cNF = Convert . ToInt32 ( nfeLocal . infNFe . ide . cNF ) . ToString ( ) . PadLeft ( tamanhocNf , '0' ) ;
9999
@@ -127,5 +127,43 @@ public static Classes.NFe Assina(this Classes.NFe nfe, ConfiguracaoServico cfgSe
127127 nfeLocal . Signature = assinatura ;
128128 return nfeLocal ;
129129 }
130+
131+ /// <summary>
132+ /// Assina um objeto NFe
133+ /// </summary>
134+ /// <param name="chave"></param>
135+ /// <param name="nfe"></param>
136+ /// <param name="cfgServico">ConfiguracaoServico para uso na classe Assinador</param>
137+ /// <returns>Retorna um objeto do tipo NFe assinado</returns>
138+ public static Classes . NFe Assina ( this Classes . NFe nfe , string chave , ConfiguracaoServico cfgServico = null , X509Certificate2 _certificado = null )
139+ {
140+ var nfeLocal = nfe ;
141+ if ( nfeLocal is null ) throw new ArgumentNullException ( "nfe" ) ;
142+
143+ var config = cfgServico ?? ConfiguracaoServico . Instancia ;
144+
145+ #region Define cNF
146+
147+ var tamanhocNf = 9 ;
148+ var versao = decimal . Parse ( nfeLocal . infNFe . versao , CultureInfo . InvariantCulture ) ;
149+ if ( versao >= 2 ) tamanhocNf = 8 ;
150+
151+ var cnf = chave . Substring ( chave . Length - 10 ) ;
152+ cnf = cnf . Remove ( cnf . Length - 1 , 1 ) ;
153+ nfeLocal . infNFe . ide . cNF = cnf ;
154+
155+ #endregion
156+
157+ nfeLocal . infNFe . Id = $ "NFe{ chave } ";
158+ nfeLocal . infNFe . ide . cDV = Convert . ToInt32 ( chave . Substring ( chave . Length - 1 ) ) ;
159+
160+ Signature assinatura = null ;
161+ if ( _certificado is null )
162+ assinatura = Assinador . ObterAssinatura ( nfeLocal , nfeLocal . infNFe . Id , config ) ;
163+ else
164+ assinatura = Assinador . ObterAssinatura ( nfeLocal , nfeLocal . infNFe . Id , _certificado , config . Certificado . ManterDadosEmCache , config . Certificado . SignatureMethodSignedXml , config . Certificado . DigestMethodReference , config . RemoverAcentos ) ;
165+ nfeLocal . Signature = assinatura ;
166+ return nfeLocal ;
167+ }
130168 }
131169}
0 commit comments