Skip to content

Commit ecb7c7d

Browse files
committed
Adicionando campo ignorarOrdenacaoElementos nas funções CarregarDeXmlString e CarregarDeArquivoXml
1 parent 325a648 commit ecb7c7d

File tree

1 file changed

+44
-6
lines changed

1 file changed

+44
-6
lines changed

NFe.Utils/NFe/ExtNFe.cs

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)