private static byte[] GetBytesCodigoBarra(int idMDFe) { string chaveAcesso = ManifestoEletronicoDAO.Instance.ObterChaveAcesso(null, idMDFe); MDFe mdfe = MDFeDAO.ObterParaDAMDFE(chaveAcesso); return(mdfe.BarCodeImage); }
internal static MDFe ObterParaDAMDFE(HttpContext context, string chaveAcesso) { MDFe mdfe = new MDFe(); Glass.Data.Model.ManifestoEletronico _manifestoEletronico = Glass.Data.DAL.ManifestoEletronicoDAO.Instance.ObterPelaChaveAcesso(chaveAcesso); // Verifica se o MDFe existe if (!File.Exists(Utils.GetMDFeXmlPathInternal(context) + chaveAcesso + "-mdfe.xml")) { throw new Exception("Arquivo do MDFe não encontrado."); } // Carrega o arquivo XML XmlDocument xmlMDFe = new XmlDocument(); xmlMDFe.Load(Utils.GetMDFeXmlPathInternal(context) + chaveAcesso + "-mdfe.xml"); XmlElement xmlInfMDFe = ObterXmlInfMDFe(context, xmlMDFe); #region Busca dados do XML do MDFe #region IDENTIFICAÇÃO MDF-e mdfe.ChaveAcesso = Formatacoes.MascaraChaveAcessoNFe(chaveAcesso); mdfe.Modelo = GetNodeValue(xmlInfMDFe, "ide", "mod"); mdfe.Serie = GetNodeValue(xmlInfMDFe, "ide", "serie"); mdfe.TipoEmissao = GetNodeValue(xmlInfMDFe, "ide", "tpEmis") == "1" ? "Normal" : "Contingência"; mdfe.NumeroManifestoEletronico = GetNodeValue(xmlInfMDFe, "ide", "nMDF"); mdfe.TipoAmbiente = Conversoes.StrParaInt(GetNodeValue(xmlInfMDFe, "ide", "tpAmb")); mdfe.DataEmissao = DateTime.Parse(GetNodeValue(xmlInfMDFe, "ide", "dhEmi")).ToString("dd/MM/yyyy HH:mm"); mdfe.UFInicio = GetNodeValue(xmlInfMDFe, "ide", "UFIni"); mdfe.UFFim = GetNodeValue(xmlInfMDFe, "ide", "UFFim"); //Protocolo de autorização if (xmlMDFe["MDFe"] != null && xmlMDFe["MDFe"]["infProt"] != null) // Sql montado no sistema { mdfe.ProtocoloAutorizacao = GetNodeValue(xmlMDFe["MDFe"], "infProt", "nProt") + " " + DateTime.Parse(GetNodeValue(xmlMDFe["MDFe"], "infProt", "dhRecbto")).ToString("dd/MM/yyyy HH:mm"); } else if (xmlMDFe["mdfeProc"] != null && xmlMDFe["mdfeProc"]["protMDFe"] != null) // Sql montado na receita { mdfe.ProtocoloAutorizacao = GetNodeValue(xmlMDFe["mdfeProc"]["protMDFe"], "infProt", "nProt") + " " + DateTime.Parse(GetNodeValue(xmlMDFe["mdfeProc"]["protMDFe"], "infProt", "dhRecbto")).ToString("dd/MM/yyyy HH:mm"); } if (mdfe.TipoEmissao == "Contingência" && string.IsNullOrWhiteSpace(mdfe.ProtocoloAutorizacao)) { mdfe.ProtocoloAutorizacao = "Impressão em contingência. Obrigatória a autorização em 168 horas após esta emissão. (" + mdfe.DataEmissao + ")"; } // Emitente mdfe.RazaoSocialEmitente = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfMDFe, "emit", "xNome")); mdfe.EnderecoEmitente = Formatacoes.RestauraStringDocFiscal(ObterEnderecoEmitente(xmlInfMDFe)); mdfe.CNPJEmitente = Formatacoes.MascaraCnpj(GetNodeValue(xmlInfMDFe, "emit", "CNPJ")); mdfe.InscEstEmitente = GetNodeValue(xmlInfMDFe, "emit", "IE"); #endregion #region INFORMAÇÕES DO MODAL RODOVIARIO if (xmlInfMDFe["infModal"]["rodo"] != null) { var _RNTRC = string.Empty; XmlElement xmlRodo = xmlInfMDFe["infModal"]["rodo"]; #region Grupo de informações para Agência Reguladora if (xmlRodo["infANTT"] != null) { var _CIOTs = new List <string>(); var _ResponsaveisCIOT = new List <string>(); var _CNPJsResponsaveisPedagio = new List <string>(); var _CNPJsFornecedoresPedagio = new List <string>(); var _NumerosCompraPedagio = new List <string>(); _RNTRC = GetNodeValue(xmlRodo, "infANTT", "RNTRC"); var xmlListainfCIOT = xmlRodo["infANTT"].GetElementsByTagName("infCIOT"); foreach (XmlElement infCIOT in xmlListainfCIOT) { _CIOTs.Add(infCIOT["CIOT"].InnerXml); _ResponsaveisCIOT.Add(Formatacoes.MascaraCnpj(infCIOT["CNPJ"].InnerXml)); } if (xmlRodo["infANTT"]["valePed"] != null) { var xmlListaValePedagio = xmlRodo["infANTT"]["valePed"].GetElementsByTagName("disp"); foreach (XmlElement disp in xmlListaValePedagio) { _CNPJsResponsaveisPedagio.Add(disp["CNPJPg"] != null ? Formatacoes.MascaraCnpj(disp["CNPJPg"].InnerXml) : mdfe.CNPJEmitente); _CNPJsFornecedoresPedagio.Add(Formatacoes.MascaraCnpj(disp["CNPJForn"].InnerXml)); _NumerosCompraPedagio.Add(disp["nCompra"].InnerXml); } } mdfe.CIOTs = string.Join("\n", _CIOTs); mdfe.ResposaveisCIOTs = string.Join("\n", _ResponsaveisCIOT); mdfe.CNPJsResponsaveisPedagio = string.Join("\n", _CNPJsResponsaveisPedagio); mdfe.CNPJsFornecedoresPedagio = string.Join("\n", _CNPJsFornecedoresPedagio); mdfe.NumerosCompraPedagio = string.Join("\n", _NumerosCompraPedagio); } #endregion #region Veículos e Condutores var _placasVeiculos = new List <string>(); var _RNTRCsVeiculos = new List <string>(); var _CPFsCondutores = new List <string>(); var _NomesCondutores = new List <string>(); // Dados do Veículo Tração _placasVeiculos.Add(GetNodeValue(xmlRodo, "veicTracao", "placa")); if (xmlRodo["veicTracao"]["prop"] != null) { _RNTRCsVeiculos.Add(GetNodeValue(xmlRodo, "veicTracao/prop", "RNTRC")); } else { _RNTRCsVeiculos.Add(_RNTRC); } // Informações do(s) Condutor(s) do veículo var xmlListaCondutor = xmlRodo["veicTracao"].GetElementsByTagName("condutor"); foreach (XmlElement condutor in xmlListaCondutor) { _CPFsCondutores.Add(Formatacoes.MascaraCpf(condutor["CPF"].InnerXml)); _NomesCondutores.Add(condutor["xNome"].InnerXml); } // Dados do Veículo Reboque if (xmlRodo["veicReboque"] != null) { var xmlListaVeicReboque = xmlRodo.GetElementsByTagName("veicReboque"); foreach (XmlElement veicReboque in xmlListaVeicReboque) { _placasVeiculos.Add(veicReboque["placa"].InnerXml); if (xmlRodo["prop"] != null) { _RNTRCsVeiculos.Add(GetNodeValue(veicReboque, "prop", "RNTRC")); } else { _RNTRCsVeiculos.Add(_RNTRC); } } } mdfe.PlacasVeiculos = string.Join("\n", _placasVeiculos); mdfe.RNTRCsVeiculos = string.Join("\n", _RNTRCsVeiculos); mdfe.CPFsCondutores = string.Join("\n", _CPFsCondutores); mdfe.NomesCondutores = string.Join("\n", _NomesCondutores); #endregion } #endregion #region INFORMAÇÕES DOS DOCUMENTOS FISCAIS VINCULADOS if (mdfe.TipoEmissao == "Contingência" && xmlInfMDFe["infDoc"] != null) { var _documentosVinculados = new List <string>(); var xmlListaInfMunDescarga = xmlInfMDFe["infDoc"].GetElementsByTagName("infMunDescarga"); foreach (XmlElement infMunDescarga in xmlListaInfMunDescarga) { // Se Tipo Emitente for Transportador de carga própria if (GetNodeValue(xmlInfMDFe, "ide", "tpEmit") == "2") { var xmlListaInfNFe = infMunDescarga.GetElementsByTagName("infNFe"); foreach (XmlElement infNFe in xmlListaInfNFe) { _documentosVinculados.Add("NFe: " + infNFe["chNFe"].InnerXml); } } else { var xmlListaInfCTe = infMunDescarga.GetElementsByTagName("infCTe"); foreach (XmlElement infCTe in xmlListaInfCTe) { _documentosVinculados.Add("CTe: " + infCTe["chCTe"].InnerXml); } } } mdfe.DocumentosFiscaisVinculados = string.Join("\n", _documentosVinculados); } #endregion #region TOTALIZADORES DA CARGA mdfe.QuantidadeCTe = string.IsNullOrWhiteSpace(GetNodeValue(xmlInfMDFe, "tot", "qCTe")) ? "0" : GetNodeValue(xmlInfMDFe, "tot", "qCTe"); mdfe.QuantidadeNFe = string.IsNullOrWhiteSpace(GetNodeValue(xmlInfMDFe, "tot", "qNFe")) ? "0" : GetNodeValue(xmlInfMDFe, "tot", "qNFe"); mdfe.ValorCarga = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfMDFe, "tot", "vCarga"), 2); mdfe.CodigoUnidade = GetNodeValue(xmlInfMDFe, "tot", "cUnid").StrParaInt() == 1 ? "KG" : "TON"; mdfe.PesoTotalCarga = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfMDFe, "tot", "qCarga"), 4); #endregion #region INFORMAÇÕES ADICIONAIS mdfe.InformacoesAdicionaisFisco = GetNodeValue(xmlInfMDFe, "infAdic", "infAdFisco"); mdfe.InformacoesComplementares = GetNodeValue(xmlInfMDFe, "infAdic", "infCpl"); #endregion #endregion return(mdfe); }