/// <summary> /// Adiciona e valida uma nota a ser enviada. /// </summary> /// <param name="nota"></param> public void AdicionarNota(Nota nota) { var bllAssinatura = new AssinaturaDeXml(); var bllXml = new Xml(); //Verifica se já passou o limite de notas por lote (regra do SEFAZ). if (notaLista.Count >= 50) { throw new Exception("Limite máximo por lote é de 50 arquivos"); } //Assina a nota try { bllAssinatura.AssinarNota(nota, NFeContexto.Certificado, "NFe"); } catch (Exception e) { throw new Exception("Erro ao assinar Nota: " + e.Message); } //Verifica se a nota está de acordo com o schema, se não estiver vai disparar um erro try { bllXml.ValidaSchema(nota.CaminhoFisico, Util.ContentFolderSchemaValidacao + "\\" + NFeContexto.Versao.PastaXml + "\\" + arquivoSchema); } catch (Exception e) { throw new Exception("Erro ao validar Nota: " + e.Message); } //Adiciona para a lista do lote a serem enviadas notaLista.Add(nota); }
private String Assinar(StringBuilder xmlStringBuilder, String id, String schema) { var bllXml = new Xml(); var arquivoTemporario = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\temp.xml"; var sw2 = File.CreateText(arquivoTemporario); sw2.Write(xmlStringBuilder.ToString()); sw2.Close(); var nota = new Nota(NFeContexto) {CaminhoFisico = arquivoTemporario}; //Assina a nota var bllAssinatura = new AssinaturaDeXml(); try { bllAssinatura.AssinarNota(nota, NFeContexto.Certificado, "evento", "#" + id); } catch (Exception e) { throw new Exception("Erro ao assinar Nota: " + e.Message); } return xmlStringBuilder.ToString(); }