예제 #1
0
        /// <summary>
        /// Retorna o endereço completo do emitente em apenas uma string
        /// </summary>
        /// <param name="xmlInfMDFe"></param>
        /// <returns></returns>
        private static string ObterEnderecoEmitente(XmlElement xmlInfMDFe)
        {
            StringBuilder enderCompleto = new StringBuilder();

            enderCompleto.Append(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "xLgr") + ", ");
            enderCompleto.Append(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "nro"));

            if (!string.IsNullOrEmpty(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "xCpl")))
            {
                enderCompleto.Append(" - " + GetNodeValue(xmlInfMDFe, "emit/enderEmit", "xCpl"));
            }

            enderCompleto.Append(" - " + GetNodeValue(xmlInfMDFe, "emit/enderEmit", "xBairro") + ", ");
            enderCompleto.Append(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "xMun") + ", ");
            enderCompleto.Append(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "UF"));

            if (!string.IsNullOrEmpty(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "CEP")))
            {
                enderCompleto.Append(" - CEP: " + GetNodeValue(xmlInfMDFe, "emit/enderEmit", "CEP"));
            }

            if (!string.IsNullOrEmpty(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "fone")))
            {
                enderCompleto.Append(" - Fone: " + TrataTelefoneMDFe(GetNodeValue(xmlInfMDFe, "emit/enderEmit", "fone")));
            }

            return(Formatacoes.RestauraStringDocFiscal(enderCompleto.ToString()));
        }
예제 #2
0
        /// <summary>
        /// Busca XML da NFe passada para imprimir o DANFE
        /// </summary>
        /// <param name="idNFe"></param>
        /// <returns></returns>
        internal ProdutosNFe[] GetForDanfe(HttpContext context, string chaveAcesso)
        {
            List <ProdutosNFe> lstProdNFe = new List <ProdutosNFe>();

            // Verifica se NFe existe
            if (!File.Exists(Utils.GetNfeXmlPathInternal(context) + chaveAcesso + "-nfe.xml"))
            {
                throw new Exception("Arquivo da NF-e não encontrado.");
            }

            // Busca arquivo XML da NFe
            XmlDocument xmlNFe = new XmlDocument();

            xmlNFe.Load(Utils.GetNfeXmlPathInternal(context) + chaveAcesso + "-nfe.xml");

            #region Busca produtos da NF-e contidos no XML

            // Busca tags com produtos
            XmlNodeList xmlListProdsNFe = NFeDAO.Instance.GetXmlInfNFe(context, xmlNFe).GetElementsByTagName("det");

            foreach (XmlElement xmlProd in xmlListProdsNFe)
            {
                ProdutosNFe prod = new ProdutosNFe();
                prod.Codigo    = GetNodeValue(xmlProd, "prod", "cProd");
                prod.Descricao = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlProd, "prod", "xProd"));
                prod.NcmSh     = GetNodeValue(xmlProd, "prod", "NCM");
                prod.Cfop      = GetNodeValue(xmlProd, "prod", "CFOP");
                prod.Unidade   = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlProd, "prod", "uCom"));
                prod.Qtd       = Formatacoes.FormataValorDecimal(GetNodeValue(xmlProd, "prod", "qCom"), 4);
                prod.VlrUnit   = Formatacoes.FormataValorDecimal(GetNodeValue(xmlProd, "prod", "vUnCom"), 2);
                prod.VlrTotal  = Formatacoes.FormataValorDecimal(GetNodeValue(xmlProd, "prod", "vProd"), 2);
                prod.Cst       = GetICMSNodeValue(xmlProd, "imposto/ICMS", "orig") + GetICMSNodeValue(xmlProd, "imposto/ICMS", "CST");
                prod.Csosn     = GetICMSNodeValue(xmlProd, "imposto/ICMS", "orig") + GetICMSNodeValue(xmlProd, "imposto/ICMS", "CSOSN");
                prod.BcIcms    = Formatacoes.FormataValorDecimal(GetICMSNodeValue(xmlProd, "imposto/ICMS", "vBC"), 2);
                prod.AliqIcms  = Formatacoes.FormataValorDecimal(GetICMSNodeValue(xmlProd, "imposto/ICMS", "pICMS"), 2);
                prod.VlrIcms   = Formatacoes.FormataValorDecimal(GetICMSNodeValue(xmlProd, "imposto/ICMS", "vICMS"), 2);
                prod.BcIcmsSt  = Formatacoes.FormataValorDecimal(GetICMSNodeValue(xmlProd, "imposto/ICMS", "vBCST"), 2);
                prod.VlrIcmsSt = Formatacoes.FormataValorDecimal(GetICMSNodeValue(xmlProd, "imposto/ICMS", "vICMSST"), 2);
                prod.AliqIpi   = Formatacoes.FormataValorDecimal(GetNodeValue(xmlProd, "imposto/IPI/IPITrib", "pIPI"), 2);
                prod.VlrIpi    = Formatacoes.FormataValorDecimal(GetNodeValue(xmlProd, "imposto/IPI/IPITrib", "vIPI"), 2);

                lstProdNFe.Add(prod);

                if (xmlProd["infAdProd"] != null)
                {
                    ProdutosNFe pNf = new ProdutosNFe();
                    pNf.InfAdic   = true;
                    pNf.Descricao = Formatacoes.RestauraStringDocFiscal(xmlProd["infAdProd"].InnerText);
                    lstProdNFe.Add(pNf);
                }
            }

            #endregion

            return(lstProdNFe.ToArray());
        }
예제 #3
0
        private GDAParameter[] GetParam(string nomeTransp, string cpfCnpj)
        {
            List <GDAParameter> lstParam = new List <GDAParameter>();

            if (!String.IsNullOrEmpty(nomeTransp))
            {
                lstParam.Add(new GDAParameter("?nome", "%" + nomeTransp + "%"));
            }

            if (!String.IsNullOrEmpty(cpfCnpj))
            {
                lstParam.Add(new GDAParameter("?cpfCnpj", Formatacoes.LimpaCpfCnpj(cpfCnpj)));
            }

            return(lstParam.Count > 0 ? lstParam.ToArray() : null);
        }
예제 #4
0
        /// <summary>
        /// Retorna o endereço do recebedor em apenas uma string
        /// </summary>
        /// <param name="xmlInfCte"></param>
        /// <returns></returns>
        private static string GetEnderecoReceb(XmlElement xmlInfCte)
        {
            StringBuilder enderExpedidor = new StringBuilder();

            enderExpedidor.Append(GetNodeValue(xmlInfCte, "receb/enderReceb", "xLgr") + ", ");
            enderExpedidor.Append(GetNodeValue(xmlInfCte, "receb/enderReceb", "nro"));

            if (!String.IsNullOrEmpty(GetNodeValue(xmlInfCte, "receb/enderReceb", "xCpl")))
            {
                enderExpedidor.Append(" - " + GetNodeValue(xmlInfCte, "receb/enderReceb", "xCpl"));
            }

            enderExpedidor.Append(" - " + GetNodeValue(xmlInfCte, "receb/enderReceb", "xBairro"));

            return(Formatacoes.RestauraStringDocFiscal(enderExpedidor.ToString()));
        }
예제 #5
0
        /// <summary>
        /// Retorna o endereço do destinatário em apenas uma string
        /// </summary>
        /// <param name="xmlInfCte"></param>
        /// <returns></returns>
        private static string GetEnderecoDest(XmlElement xmlInfCte)
        {
            StringBuilder enderDestinatario = new StringBuilder();

            enderDestinatario.Append(GetNodeValue(xmlInfCte, "dest/enderDest", "xLgr") + ", ");
            enderDestinatario.Append(GetNodeValue(xmlInfCte, "dest/enderDest", "nro"));

            if (!String.IsNullOrEmpty(GetNodeValue(xmlInfCte, "dest/enderDest", "xCpl")))
            {
                enderDestinatario.Append(" - " + GetNodeValue(xmlInfCte, "dest/enderDest", "xCpl"));
            }

            enderDestinatario.Append(" - " + GetNodeValue(xmlInfCte, "dest/enderDest", "xBairro"));

            return(Formatacoes.RestauraStringDocFiscal(enderDestinatario.ToString()));
        }
        private void cmdPesquisa_Click(object sender, EventArgs e)
        {
            Validacoes v        = new Validacoes();
            string     dtInicio = mskDtInicio.Text;
            string     dtFim    = mskDtFim.Text;

            try
            {
                if (mskDtInicio.Text == "  /  /")
                {
                    return;
                }
                if (mskDtFim.Text == "  /  /")
                {
                    return;
                }
                if (v.ValidaData(dtInicio.ToString()) == false)
                {
                    MessageBox.Show("Data inicial inválida.", "Mensagem");
                    return;
                }
                if (v.ValidaData(dtFim.ToString()) == false)
                {
                    MessageBox.Show("Data final inválida.", "Mensagem");
                    return;
                }
                Validacoes.ValidaDatas(dtInicio, dtFim);
            }
            catch (DomainException dex)
            {
                MessageBox.Show(dex.Message, "Mensagem");
                return;
            }

            dtInicio = Formatacoes.FormataDataSql(dtInicio);
            dtFim    = Formatacoes.FormataDataSql(dtFim);

            lstFaturas.Items.Clear();
            ReceitaDAL     rDAL = new ReceitaDAL();
            List <Receita> list = rDAL.RetornaReceitaByPeriodo(IdSocio, dtInicio, dtFim);

            foreach (Receita receita in list)
            {
                PopulaLista(receita);
            }
        }
예제 #7
0
        //public int GetIdLote()
        //{
        //    string sql = "select max(IdLote) from carta_correcao";
        //    object obj = objPersistence.ExecuteScalar(sql);
        //    if (obj != System.DBNull.Value)
        //        return Convert.ToInt32(obj) + 1;
        //    else
        //        return 1;
        //}

        #endregion

        #region Insere a carta de correção

        public override uint Insert(CartaCorrecao objInsert)
        {
            string chaveAcessoNf = NotaFiscalDAO.Instance.ObtemChaveAcesso(objInsert.IdNf);
            uint   idCidade      = LojaDAO.Instance.ObtemValorCampo <uint>("idCidade", "idLoja=" + NotaFiscalDAO.Instance.ObtemIdLoja(objInsert.IdNf));
            string cpfCnpj       = LojaDAO.Instance.ObtemValorCampo <string>("cnpj", "idLoja=" + NotaFiscalDAO.Instance.ObtemIdLoja(objInsert.IdNf));
            string codIbgeUf     = CidadeDAO.Instance.ObtemValorCampo <string>("codIbgeUf", "idCidade=" + idCidade);

            objInsert.NumeroSequencialEvento = ObtemNumSeqEvento(objInsert.IdNf);
            objInsert.IdInfEvento            = "ID" + objInsert.TipoEvento.ToString() + chaveAcessoNf + objInsert.NumeroSequencialEvento.ToString().PadLeft(2, '0');
            objInsert.Orgao        = Convert.ToUInt32(codIbgeUf);
            objInsert.TipoAmbiente = ((int)ConfigNFe.TipoAmbiente);
            objInsert.ChaveNFe     = chaveAcessoNf;
            objInsert.Situacao     = CartaCorrecao.SituacaoEnum.Ativa;
            objInsert.Correcao     = Formatacoes.TrataTextoDocFiscal(objInsert.Correcao);

            objInsert.CNPJ = cpfCnpj.Replace(".", String.Empty).Replace("-", String.Empty).Replace("/", String.Empty);

            return(objPersistence.Insert(objInsert));
        }
예제 #8
0
        public void Serializar(System.IO.TextWriter writer)
        {
            var ret = "";

            ret += "6000|";
            ret += TipoLancamento + "|";
            ret += IdConta + "|";
            ret += Formatacoes.TrataStringArquivoDominioSistemas(ReferenciaCompleta) + "||";

            writer.WriteLine(ret);

            ret = "";

            ret += "6100|";
            ret += DataCad.ToString("dd/MM/yyyy") + "|";
            ret += ContaContabilPagar + "|";
            ret += ContaContabilReceber + "|";
            ret += ValorLancamento + "||";
            ret += Formatacoes.TrataStringArquivoDominioSistemas(ReferenciaCompleta) + "||||";

            writer.WriteLine(ret);
        }
예제 #9
0
        public string BuscarByDescricao(string campoId, string campoDescr, string tipoDAO,
                                        string nomeMetodo, string parametros, string descricao, string recuperarValores)
        {
            try
            {
                campoId    = Decode(campoId);
                campoDescr = Decode(campoDescr);
                tipoDAO    = Decode(tipoDAO);
                parametros = recuperarValores != "true" ? Decode(parametros) : parametros;

                var flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy;

                Type DAO = Type.GetType(tipoDAO + (tipoDAO.Contains("Glass.Data") ? ", Glass.Data" :
                                                   tipoDAO.Contains("WebGlass.Business") ? ", WebGlass.Business" : ""));

                Type tipoModel = tipoDAO.Contains("DAL") ? DAO.GetMethod("GetElementByPrimaryKey", flags, null, new Type[] { typeof(uint) }, null).ReturnType : null;

                bool isCampoDescrInTable = false;

                if (tipoDAO.Contains("DAL") && tipoModel != null && String.IsNullOrEmpty(parametros))
                {
                    PropertyInfo propDescr = tipoModel.GetProperty(campoDescr, flags);

                    PersistencePropertyAttribute[] descrAtr = propDescr.GetCustomAttributes(typeof(PersistencePropertyAttribute), true) as PersistencePropertyAttribute[];

                    if (descrAtr.Length > 0 && descrAtr[0].Direction != DirectionParameter.InputOptional && descrAtr[0].Direction != DirectionParameter.InputOptionalOutput &&
                        descrAtr[0].Direction != DirectionParameter.InputOptionalOutputOnlyInsert)
                    {
                        isCampoDescrInTable = true;
                    }
                }

                if (isCampoDescrInTable)
                {
                    object instance = DAO.GetProperty("Instance", flags).GetValue(null, null);

                    string nomeTabela = DAO.GetMethod("GetTableName", flags).Invoke(instance, null) as string;

                    if (String.IsNullOrEmpty(nomeTabela))
                    {
                        return("Erro|Tabela não encontrada.");
                    }

                    string sql = "select concat(Cast(" + GetDbName(tipoModel, campoId) + " as char), '|', Cast(" +
                                 GetDbName(tipoModel, campoDescr) + " as char)) from " + nomeTabela + " where " + GetDbName(tipoModel, campoDescr) + "=?descr";

                    string retorno = DAO.GetMethod("ExecuteScalar", flags, null, new Type[] { typeof(string), typeof(GDA.GDAParameter[]) }, null).MakeGenericMethod(typeof(string)).
                                     Invoke(instance, new object[] { sql, new GDAParameter[] { new GDAParameter("?descr", descricao) } }) as string;

                    if (retorno == null)
                    {
                        throw new Exception("Item não encontrado.");
                    }

                    string[] dados = retorno.Split('|');
                    return("Ok|" + dados[0] + "|" + dados[1]);
                }
                else
                {
                    nomeMetodo = Decode(nomeMetodo).Split(',')[1];

                    var      metodos         = DAO.GetMethods(flags);
                    string[] dadosParametros = parametros.Split('|');

                    MethodInfo metodo = metodos.Where(x => x.Name == nomeMetodo).
                                        Where(x => x.GetParameters().Length == (parametros != String.Empty ? dadosParametros.Length : 0)).
                                        FirstOrDefault();

                    tipoModel = metodo.ReturnType;

                    ParameterInfo[] pi    = metodo.GetParameters();
                    object[]        param = new object[pi.Length];

                    for (int j = 0; j < param.Length; j++)
                    {
                        for (int k = 0; k < dadosParametros.Length; k++)
                        {
                            string[] dados = dadosParametros[k].Split(':');
                            if (pi[j].Name == dados[0])
                            {
                                param[j] = Conversoes.ConverteValor(pi[j].ParameterType, dados[1]);
                                break;
                            }
                        }
                    }

                    object instance = metodo.IsStatic ? null :
                                      DAO.GetProperty("Instance", flags).GetValue(null, null);

                    if (!metodo.IsStatic && instance == null)
                    {
                        try { instance = Activator.CreateInstance(DAO); }
                        catch { }
                    }

                    object retorno = metodo.Invoke(instance, param);

                    PropertyInfo id = null, descr = null;
                    object       i, d;

                    if (typeof(IEnumerable).IsAssignableFrom(tipoModel))
                    {
                        foreach (object o in (IEnumerable)retorno)
                        {
                            if (id == null)
                            {
                                id    = o.GetType().GetProperty(campoId);
                                descr = o.GetType().GetProperty(campoDescr);
                            }

                            i = id.GetValue(o, null);
                            d = descr.GetValue(o, null);

                            string comp = d is string || d is ValueType || d != null?d.ToString() : null;

                            if (String.Equals(Formatacoes.TrataTextoComparacaoSelPopUp(comp).Replace("  ", "").Replace(" ", "").Replace("-", "").ToLower(),
                                              Formatacoes.TrataTextoComparacaoSelPopUp(descricao).Replace("  ", "").Replace(" ", "").Replace("-", "").ToLower(),
                                              StringComparison.InvariantCultureIgnoreCase))
                            {
                                return("Ok|" + i + "|" + d);
                            }
                        }

                        return("Erro|Item não encontrado.");
                    }
                    else
                    {
                        id    = retorno.GetType().GetProperty(campoId);
                        descr = retorno.GetType().GetProperty(campoDescr);

                        i = id.GetValue(retorno, null);
                        d = descr.GetValue(retorno, null);

                        string comp = d is string || d is ValueType || d != null?d.ToString() : null;

                        if (String.Equals(Formatacoes.TrataTextoComparacaoSelPopUp(comp).Replace("  ", "").Replace(" ", "").Replace("-", "").ToLower(),
                                          Formatacoes.TrataTextoComparacaoSelPopUp(descricao).Replace("  ", "").Replace(" ", "").Replace("-", "").ToLower(),
                                          StringComparison.InvariantCultureIgnoreCase))
                        {
                            return("Ok|" + i + "|" + d);
                        }
                        else
                        {
                            return("Erro|Item não encontrado.");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return("Erro|" + Glass.MensagemAlerta.FormatErrorMsg("", ex));
            }
        }
예제 #10
0
        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);
        }
예제 #11
0
        protected override Colosoft.Reports.IReportDocument LoadReport(ref LocalReport report, ref List <ReportParameter> lstParam,
                                                                       HttpRequest PageRequest, System.Collections.Specialized.NameValueCollection Request, object[] outrosParametros, LoginUsuario login, string diretorioLogotipos)
        {
            TipoRelatorioPedido tipo = !String.IsNullOrEmpty(Request["tipo"]) ? (TipoRelatorioPedido)Glass.Conversoes.StrParaInt(Request["tipo"]) : TipoRelatorioPedido.Normal;

            Glass.Data.Model.Pedido[] pedido = PedidoDAO.Instance.GetForRpt(Request["idPedido"], tipo == TipoRelatorioPedido.Pcp, login);
            uint idLoja = pedido[0].IdLoja;

            List <ProdutosPedido> prodPedido  = new List <ProdutosPedido>();
            List <ParcelasPedido> parcPedido  = new List <ParcelasPedido>();
            List <AmbientePedido> ambPedido   = new List <AmbientePedido>();
            List <TextoPedido>    textoPedido = new List <TextoPedido>();

            report.ReportPath = PedidoConfig.RelatorioPedido.NomeArquivoRelatorio(idLoja).Item1;

            Dictionary <int, List <string> > parametros = new Dictionary <int, List <string> >();

            for (int i = 0; i < 20; i++)
            {
                parametros.Add(i, new List <string>());
            }

            for (int i = 0; i < pedido.Length; i++)
            {
                parcPedido.AddRange(ParcelasPedidoDAO.Instance.GetForRpt(pedido[i].IdPedido));
                ambPedido.AddRange(AmbientePedidoDAO.Instance.GetByPedido(pedido[i].IdPedido, tipo == TipoRelatorioPedido.Pcp));
                prodPedido.AddRange(PedidoConfig.RelatorioPedido.ExibirItensProdutosPedido ?
                                    ProdutosPedidoDAO.Instance.GetForRpt(pedido[i].IdPedido, tipo == TipoRelatorioPedido.Pcp) :
                                    ProdutosPedidoDAO.Instance.GetForRptAmbiente(pedido[i].IdPedido,
                                                                                 tipo == TipoRelatorioPedido.Pcp));

                textoPedido.AddRange(TextoPedidoDAO.Instance.GetByPedido(pedido[i].IdPedido));

                float taxaEntrega = 0f;
                if (PedidoConfig.Pedido_FastDelivery.FastDelivery && pedido[i].FastDelivery)
                {
                    taxaEntrega = PedidoConfig.Pedido_FastDelivery.TaxaFastDelivery;
                }

                string separador    = " - ";
                string enderecoLoja = pedido[i].RptEnderecoLoja + pedido[i].RptComplLoja + separador + pedido[i].RptBairroLoja + separador +
                                      pedido[i].RptTelefoneLoja + separador + "CEP: " + pedido[i].RptCepLoja;

                parametros[0].Add(taxaEntrega.ToString() + "%");
                parametros[1].Add(pedido[i].IdPedido.ToString());
                parametros[2].Add(String.IsNullOrEmpty(pedido[i].NomeFunc) ? "." : pedido[i].NomeFunc);
                parametros[3].Add(pedido[i].DataPedido.ToString("dd/MM/yyyy"));
                parametros[4].Add(String.IsNullOrEmpty(pedido[i].FoneFaxLoja) ? "." : pedido[i].FoneFaxLoja);
                parametros[5].Add(String.IsNullOrEmpty(pedido[i].RptNomeLoja) ? "." : pedido[i].RptNomeLoja);
                parametros[6].Add(String.IsNullOrEmpty(pedido[i].DadosLoja) ? "." : pedido[i].DadosLoja);
                parametros[7].Add(pedido[i].DataCad.ToString("dd/MM/yyyy"));
                parametros[8].Add(pedido[i].DescrSituacaoPedido);
                parametros[9].Add(String.IsNullOrEmpty(pedido[i].EmailLoja) ? "." : pedido[i].EmailLoja);
                parametros[10].Add(String.IsNullOrEmpty(pedido[i].RptTelefoneLoja) ? "." : pedido[i].RptTelefoneLoja);
                parametros[11].Add(String.IsNullOrEmpty(enderecoLoja) ? "." : enderecoLoja);
                parametros[12].Add(String.IsNullOrEmpty(pedido[i].DataEntregaString) ? "." : pedido[i].DataEntregaString);
                parametros[13].Add((pedido[i].TipoPedido == (int)Glass.Data.Model.Pedido.TipoPedidoEnum.MaoDeObra).ToString());
                parametros[14].Add(String.IsNullOrEmpty(pedido[i].CodCliente) ? "." : pedido[i].CodCliente);
                parametros[15].Add(!String.IsNullOrEmpty(pedido[i].CodCliente) ? pedido[i].CodCliente.ToString() : ".");
                parametros[16].Add(!PedidoConfig.LiberarPedido ? ContasReceberDAO.Instance.GetTotalDescontoParcelas(pedido[i].IdPedido).ToString() : ".");
                parametros[17].Add(!String.IsNullOrEmpty(pedido[i].Obs) ? "Obs: " + pedido[i].Obs : ".");

                string codRota   = string.Empty;
                string descrRota = string.Empty;

                // Só exibe o código da rota se não for tipo de entrega balcão
                if (PedidoDAO.Instance.ObtemTipoEntrega(pedido[i].IdPedido) != (uint)Glass.Data.Model.Pedido.TipoEntregaPedido.Balcao)
                {
                    codRota   = RotaDAO.Instance.ObtemCodRota(pedido[i].IdCli);
                    descrRota = RotaDAO.Instance.ObtemDescrRota(pedido[i].IdCli);
                }

                parametros[18].Add(!String.IsNullOrEmpty(codRota) ? codRota : ".");
                parametros[19].Add(!String.IsNullOrEmpty(descrRota) ? descrRota : ".");

                // Indica se o pedido é de cliente
                pedido[i].RptIsCliente = login != null ? login.IdCliente > 0 : false;
            }

            var prodPedidoRpt = new List <ProdutosPedido>();

            foreach (var item in prodPedido.Where(f => f.IdProdPedParent == null))
            {
                prodPedidoRpt.Add(item);

                foreach (var itemFlilho in prodPedido.Where(f => f.IdProdPedParent == item.IdProdPed))
                {
                    prodPedidoRpt.Add(itemFlilho);
                    prodPedidoRpt.AddRange(prodPedido.Where(f => f.IdProdPedParent == itemFlilho.IdProdPed));
                }
            }

            if (!IsRelOtimizado((int)idLoja))
            {
                report.DataSources.Add(new ReportDataSource("Pedido", pedido));
                report.DataSources.Add(new ReportDataSource("ProdutosPedido", prodPedidoRpt));
            }
            else
            {
                report.DataSources.Add(new ReportDataSource("PedidoRpt", PedidoRptDAL.Instance.CopiaLista(pedido, PedidoRpt.TipoConstrutor.RelatorioPedido, false, login)));
                report.DataSources.Add(new ReportDataSource("ProdutosPedidoRpt", ProdutosPedidoRptDAL.Instance.CopiaLista(prodPedidoRpt.ToArray())));
            }

            lstParam.Add(new ReportParameter("LojaCalculaICMSPedido", LojaDAO.Instance.ObtemCalculaIcmsStPedido(null, idLoja).ToString()));
            lstParam.Add(new ReportParameter("LojaCalculaIPIPedido", LojaDAO.Instance.ObtemCalculaIpiPedido(null, idLoja).ToString()));
            lstParam.Add(new ReportParameter("TemProdutoLamComposicao", pedido[0].TemProdutoLamComposicao.ToString()));

            report.DataSources.Add(new ReportDataSource("ParcelasPedido", parcPedido));
            report.DataSources.Add(new ReportDataSource("AmbientePedido", ambPedido));
            report.DataSources.Add(new ReportDataSource("TextoPedido", textoPedido));

            lstParam.Add(new ReportParameter("TaxaEntrega", parametros[0].ToArray()));
            lstParam.Add(new ReportParameter("AgruparBeneficiamentos", PedidoConfig.RelatorioPedido.AgruparBenefRelatorio.ToString()));
            lstParam.Add(new ReportParameter("ExibirM2Calc", PedidoConfig.RelatorioPedido.ExibirM2CalcRelatorio.ToString()));
            lstParam.Add(new ReportParameter("Cabecalho_DataLocal", LojaDAO.Instance.GetCidade(pedido[0].IdLoja, false) + ", " + Formatacoes.DataExtenso(pedido[0].DataPedido)));
            lstParam.Add(new ReportParameter("Cabecalho_IdPedido", parametros[1].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_NomeFunc", parametros[2].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DataPedido", parametros[3].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_FoneFaxLoja", parametros[4].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_NomeLoja", parametros[5].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DadosLoja", parametros[6].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DataCad", parametros[7].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_Situacao", parametros[8].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_EmailLoja", parametros[9].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_TelefoneLoja", parametros[10].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_EnderecoLoja", parametros[11].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DataEntrega", parametros[12].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_MaoDeObra", parametros[13].ToArray()));
            lstParam.Add(new ReportParameter("ExibirComissao", (!PedidoConfig.Comissao.UsarComissionadoCliente && false).ToString())); // Não exibe a comissão em nenhum relatório
            lstParam.Add(new ReportParameter("ImpressoPor", login != null ? login.Nome : string.Empty));
            lstParam.Add(new ReportParameter("TipoRpt", ((int)tipo).ToString()));
            lstParam.Add(new ReportParameter("FormatTotM", Geral.GetFormatTotM()));
            lstParam.Add(new ReportParameter("Cabecalho_CodCliente", parametros[14].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_NumPedCli", parametros[15].ToArray()));
            lstParam.Add(new ReportParameter("DescontoParcelas", parametros[16].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_Obs", parametros[17].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_CpfCnpjLoja", LojaDAO.Instance.ObtemCnpj(idLoja)));
            lstParam.Add(new ReportParameter("Cabecalho_InscEstLoja", LojaDAO.Instance.ObtemInscEst(idLoja)));
            lstParam.Add(new ReportParameter("Cabecalho_Rota", parametros[18].ToArray()));
            lstParam.Add(new ReportParameter("Cabecalho_DescrRota", parametros[19].ToArray()));
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest, idLoja)));

            return(null);
        }
예제 #12
0
        public KeyValuePair <string, string>[] ObtemCpfCnpj()
        {
            var itens = LimiteChequeCpfCnpjDAO.Instance.ObtemCpfCnpj();

            return(Array.ConvertAll(itens, x => new KeyValuePair <string, string>(x, Formatacoes.FormataCpfCnpj(x))));
        }
예제 #13
0
        protected void BuscaInfoCliente(uint idCli)
        {
            Cliente cli = ClienteDAO.Instance.GetElement(idCli);

            #region Dados Cadastrais

            lblInfoCodCli.Text  = cli.IdCli.ToString();
            lblInfoNomeCli.Text = cli.Nome;
            lblInfoContato.Text = ((!string.IsNullOrEmpty(cli.Contato) ? cli.Contato : null) +
                                   (!string.IsNullOrEmpty(cli.Contato1) ? ", " + cli.Contato1 : null) +
                                   (!string.IsNullOrEmpty(cli.Contato2) ? ", " + cli.Contato2 : null)).TrimStart(',').TrimEnd(',');
            lblInfoTelefoneContato.Text = ((!string.IsNullOrEmpty(cli.TelCont) ? cli.TelCont : null) +
                                           (!string.IsNullOrEmpty(cli.TelRes) ? ", " + cli.TelRes : null) +
                                           (!string.IsNullOrEmpty(cli.TelCel) ? ", " + cli.TelCel : null)).TrimStart(',').TrimEnd(',');
            lblInfoCPF.Text              = Formatacoes.FormataCpfCnpj(cli.CpfCnpj);
            lblInfoTipoFiscal.Text       = cli.TipoFiscalString;
            lblInfoTipoContribuinte.Text = cli.IndicadorIEDestinatario.Translate().Format();
            lblInfoInscEst.Text          = cli.RgEscinst;
            lblInfoCrt.Text              = cli.DescrCrt;
            lblInfoCnae.Text             = cli.Cnae;
            lblEmail.Text = cli.Email;

            lblObs.Text    = cli.Obs;
            lblObsLib.Text = cli.ObsLiberacao;
            lblObsNFe.Text = cli.ObsNfe;

            lblObs.ForeColor = Liberacao.TelaLiberacao.CorExibirObservacaoCliente;

            if (cli.IdFunc > 0)
            {
                lblInfoVendedor.Text = FuncionarioDAO.Instance.GetNome((uint)cli.IdFunc.Value);
            }

            lblInfoSituacao.Text = cli.DescrSituacao;

            if (cli.Situacao > 1)
            {
                lblInfoSituacao.ForeColor = Color.Red;
                lblInfoSituacao.Font.Bold = true;
            }

            #endregion

            #region Dados Financeiros

            var limiteCliente = Data.CalculadoraLimiteCredito.Calculadora.ObterLimite(null, cli);

            lblFinancLimPadrao.Text         = limiteCliente.ToString("C");
            lblPagarAntesProducao.Text      = cli.PagamentoAntesProducao ? "Sim" : "Não";
            lblTabelaDescontoAcrescimo.Text = cli.TabelaDescontoAcrescimo;

            if (limiteCliente > 0)
            {
                lblFinancLimDisp.Text = (limiteCliente - ContasReceberDAO.Instance.GetDebitos((uint)cli.IdCli, null)).ToString("C");
            }

            lblFinancPagtoPadrao.Text = FormaPagtoDAO.Instance.GetDescricao((uint)cli.IdFormaPagto.GetValueOrDefault(0));

            var formasPagtoDisp = FormaPagtoDAO.Instance.GetByCliente((uint)cli.IdCli);
            if (formasPagtoDisp.Count > 0)
            {
                lblFinancPagtoDisp.Text = "<ul>";

                foreach (FormaPagto fp in formasPagtoDisp)
                {
                    lblFinancPagtoDisp.Text += "<li>" + fp.Descricao + "</li>";
                }

                lblFinancPagtoDisp.Text += "</ul>";
            }

            var parc = ParcelasDAO.Instance.GetPadraoCliente((uint)cli.IdCli);
            lblFinancParcPadrao.Text = parc != null ? parc.DescrCompleta : String.Empty;

            var parcelasDisp = ParcelasDAO.Instance.GetByClienteFornecedor((uint)cli.IdCli, 0, false, ParcelasDAO.TipoConsulta.Todos);
            if (parcelasDisp.Length > 0)
            {
                lblFinancParcDisp.Text = "<ul>";

                foreach (Parcelas p in parcelasDisp)
                {
                    if (!p.NaoUsar && p.Situacao == Situacao.Ativo)
                    {
                        lblFinancParcDisp.Text += "<li>" + p.DescrCompleta + "</li>";
                    }
                }

                lblFinancParcDisp.Text += "</ul>";
            }

            lblFinancPercSinalMin.Text = cli.PercSinalMinimo == null ? "" : cli.PercSinalMinimo.ToString() + "%";
            lblFinancCredito.Text      = cli.Credito.ToString("C");

            lblContasVencidas.Text = ContasReceberDAO.Instance.ClientePossuiContasVencidas((uint)cli.IdCli) ? "Cliente Possui Contas Vencidas" : "";

            CarregarGrdVendas(idCli);

            #endregion
        }
예제 #14
0
        public void Finalizar(uint idCte)
        {
            lock (_finalizarCTeLock)
            {
                using (var transaction = new GDATransaction())
                {
                    try
                    {
                        transaction.BeginTransaction();

                        Entidade.Cte cte = BuscarCte.Instance.GetCte(transaction, idCte);

                        #region Valida dados do CT-e

                        // TODO: Fazer validações do tipo: CNPJ/Insc Est do transportador,
                        // codigo NCM preenchido automaticamente entre outros.

                        if (cte.NumeroCte == 0)
                        {
                            throw new Exception("Informe o número do conhecimento de transporte.");
                        }

                        if (string.IsNullOrEmpty(cte.Modelo))
                        {
                            throw new Exception("Informe o modelo do conhecimento de transporte.");
                        }

                        if (cte.IdNaturezaOperacao == 0)
                        {
                            throw new Exception("Selecione a natureza de operação do conhecimento de transporte.");
                        }

                        // Verifica se o CFOP selecionado é de nota fiscal de saída
                        if (!CfopDAO.Instance.IsCfopEntrada(transaction, (int)cte.IdCfop))
                        {
                            throw new Exception("O CFOP informado no conhecimento de transporte não é um CFOP de entrada.");
                        }

                        // Verifica se o CTE já foi finalizado.
                        if (cte.Situacao == (int)Glass.Data.Model.Cte.ConhecimentoTransporte.SituacaoEnum.Autorizado ||
                            cte.Situacao == (int)Glass.Data.Model.Cte.ConhecimentoTransporte.SituacaoEnum.FinalizadoTerceiros)
                        {
                            throw new Exception("O CTE de número " + cte.NumeroCte + " já foi " +
                                                (cte.Situacao == (int)Glass.Data.Model.Cte.ConhecimentoTransporte.SituacaoEnum.Autorizado ? "autorizado" : "finalizado."));
                        }

                        //Verifica se o cfop selecionado corresponde a uf do emitente e destinatario
                        var codCfop   = Glass.Conversoes.StrParaInt(CfopDAO.Instance.ObtemCodInterno(transaction, cte.IdCfop)[0].ToString());
                        var ufOrigem  = CidadeDAO.Instance.GetNomeUf(transaction, cte.IdCidadeInicio);
                        var ufDestino = CidadeDAO.Instance.GetNomeUf(transaction, cte.IdCidadeFim);

                        if (ufOrigem.ToLower() == ufDestino.ToLower() && codCfop != 1)
                        {
                            throw new Exception("O CFOP informado não corresponde a um CFOP de entrada dentro do estado.");
                        }
                        else if (ufOrigem.ToLower() != ufDestino.ToLower() && codCfop != 2)
                        {
                            throw new Exception("O CFOP informado não corresponde a um CFOP de entrada fora do estado.");
                        }
                        else if (ufOrigem.ToLower() == "ex" && codCfop != 3)
                        {
                            throw new Exception("O CFOP informado não corresponde a um CFOP de entrada fora do país.");
                        }

                        if (!string.IsNullOrEmpty(cte.ChaveAcesso))
                        {
                            var cnpjChaveAcesso = cte.ChaveAcesso.Substring(6, 14);
                            var emitente        = cte.ObjParticipanteCte.FirstOrDefault(x => x.TipoParticipante == Glass.Data.Model.Cte.ParticipanteCte.TipoParticipanteEnum.Emitente);

                            var cpfCnpjEmitente = emitente == null ? null :
                                                  emitente.IdLoja > 0 ? LojaDAO.Instance.ObtemCnpj(transaction, emitente.IdLoja.Value) :
                                                  emitente.IdCliente > 0 ? ClienteDAO.Instance.ObtemCpfCnpj(transaction, emitente.IdCliente.Value) :
                                                  emitente.IdFornec > 0 ? FornecedorDAO.Instance.ObtemCpfCnpj(transaction, emitente.IdFornec.Value) :
                                                  emitente.IdTransportador > 0 ? TransportadorDAO.Instance.GetElementByPrimaryKey(transaction, emitente.IdTransportador.Value).CpfCnpj : null;

                            if (cpfCnpjEmitente != null && Formatacoes.LimpaCpfCnpj(cpfCnpjEmitente) != cnpjChaveAcesso)
                            {
                                throw new Exception("O CNPJ do Emitente não é o mesmo informado na chave de acesso.");
                            }
                        }

                        #endregion

                        if (cte.TipoDocumentoCte != (int)Glass.Data.Model.Cte.ConhecimentoTransporte.TipoDocumentoCteEnum.EntradaTerceiros)
                        {
                            var notas = NotaFiscalCteDAO.Instance.GetCount(transaction, idCte);
                            if (notas == 0)
                            {
                                throw new Exception("Selecione ao menos uma nota fiscal que está vinculada ao CT-e.");
                            }
                        }

                        GerarContasPagar(transaction, cte);

                        // Altera a situação do CTe
                        ConhecimentoTransporteDAO.Instance.AlteraSituacao(transaction, idCte, Glass.Data.Model.Cte.ConhecimentoTransporte.SituacaoEnum.FinalizadoTerceiros);

                        transaction.Commit();
                        transaction.Close();
                    }
                    catch
                    {
                        transaction.Rollback();
                        transaction.Close();
                        throw;
                    }
                }
            }
        }
예제 #15
0
        protected override Colosoft.Reports.IReportDocument LoadReport(ref LocalReport report, ref List <ReportParameter> lstParam,
                                                                       HttpRequest PageRequest, System.Collections.Specialized.NameValueCollection Request, object[] outrosParametros, LoginUsuario login, string diretorioLogotipos)
        {
            Glass.Data.RelModel.Recibo recibo;

            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "recibo":
                if (string.IsNullOrEmpty(outrosParametros[0].ToString()) || string.IsNullOrEmpty(outrosParametros[1].ToString()))
                {
                    return(null);
                }

                var idOrcamento = Request["idOrcamento"] != "0" && Request["idOrcamento"] != "" ? Request["idOrcamento"].StrParaUint() : 0;
                var idPedido    = Request["idPedido"] != "0" && Request["idPedido"] != "" ? Request["idPedido"].StrParaUint() : 0;
                var idLiberacao = Request["idLiberacao"] != "0" && Request["idLiberacao"] != "" ? Request["idLiberacao"].StrParaUint() : 0;
                var idsContaR   = outrosParametros[1].ToString();

                if (idsContaR == null || idsContaR == "0")
                {
                    if (PedidoConfig.LiberarPedido)
                    {
                        var contasRec = ContasReceberDAO.Instance.GetByLiberacaoPedido(idLiberacao, true);
                        if (contasRec != null && contasRec.Count > 0)
                        {
                            idsContaR = string.Join(",", contasRec.Select(f => f.IdContaR.ToString()));
                        }
                    }
                    else
                    {
                        var contasRec = ContasReceberDAO.Instance.GetByPedido(null, idPedido, false, true);
                        if (contasRec != null && contasRec.Count > 0)
                        {
                            idsContaR = string.Join(",", contasRec.Select(f => f.IdContaR.ToString()));
                        }
                    }
                }

                var orcamento = new Data.Model.Orcamento();
                var pedido    = new Data.Model.Pedido();
                var liberacao = new LiberarPedido();

                var nomeCliente  = string.Empty;
                var nomeVendedor = string.Empty;
                var idLoja       = new uint();
                var total        = new decimal();

                #region Orçamento

                // Recupera os dados do orçamento.
                if (idOrcamento > 0)
                {
                    orcamento = OrcamentoDAO.Instance.GetElementByPrimaryKey(idOrcamento);

                    if (orcamento.IdCliente > 0)
                    {
                        nomeCliente = ClienteDAO.Instance.GetNome(orcamento.IdCliente.Value);
                    }
                    else
                    {
                        nomeCliente = orcamento.NomeCliente;
                    }

                    nomeVendedor = orcamento.IdFuncionario > 0 ? FuncionarioDAO.Instance.GetNome(orcamento.IdFuncionario.Value) : login.Nome;
                    idLoja       = orcamento.IdLoja > 0 ? orcamento.IdLoja.Value : login.IdLoja;
                    total        = orcamento.Total;

                    idPedido    = 0;
                    idLiberacao = 0;
                }

                #endregion

                #region Pedido

                // Recupera os dados do pedido.
                else if (idPedido > 0)
                {
                    pedido       = PedidoDAO.Instance.GetElementByPrimaryKey(idPedido);
                    nomeCliente  = ClienteDAO.Instance.GetNome(pedido.IdCli);
                    nomeVendedor = pedido.IdFunc > 0 ? FuncionarioDAO.Instance.GetNome(pedido.IdFunc) : login.Nome;
                    idLoja       = pedido.IdPedido > 0 ? pedido.IdLoja : login.IdLoja;
                    total        = pedido.Total;

                    // Se houver pcp, usa o total do mesmo
                    var totalEspelho = PedidoEspelhoDAO.Instance.ObtemTotal(idPedido);
                    if (totalEspelho > 0)
                    {
                        total = totalEspelho;
                    }

                    idLiberacao = 0;
                }

                #endregion

                #region Liberação

                // Recupera os dados da liberação.
                else if (idLiberacao > 0)
                {
                    liberacao    = LiberarPedidoDAO.Instance.GetElement(idLiberacao);
                    nomeCliente  = ClienteDAO.Instance.GetNome(liberacao.IdCliente);
                    nomeVendedor = !string.IsNullOrEmpty(liberacao.NomeFunc) ? liberacao.NomeFunc : login.Nome;
                    idLoja       = (uint)FuncionarioDAO.Instance.GetElementByPrimaryKey(liberacao.IdFunc).IdLoja;
                    total        = liberacao.Total;
                }

                #endregion

                recibo                 = new Data.RelModel.Recibo();
                recibo.Tipo            = Conversoes.StrParaInt(Request["referente"]);
                recibo.IdOrcamento     = orcamento.IdOrcamento;
                recibo.IdPedido        = pedido.IdPedido;
                recibo.IdLiberarPedido = liberacao.IdLiberarPedido;
                recibo.Cliente         = nomeCliente;
                recibo.IdLoja          = idLoja;
                recibo.SinalPedido     = pedido.IdPedido > 0 ? pedido.ValorEntrada + pedido.ValorPagamentoAntecipado : 0;
                recibo.Total           = total;
                recibo.Vendedor        = nomeVendedor;
                recibo.Items           = outrosParametros[0].ToString();
                recibo.NumParcelas     = idsContaR;
                recibo.ValorReferente  = Request["valorRef"];
                recibo.MotivoReferente = Request["motivoRef"];
                report.ReportPath      = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");

                if (report.ReportPath == "Relatorios/Genericos/ModeloRecibo/rptReciboVidrosEVidros.rdlc")
                {
                    lstParam.Add(new ReportParameter("ImagemCabecalho",
                                                     "file:///" + PageRequest.PhysicalApplicationPath.Replace('\\', '/') + "Images/cabecalhoOrcamentoVivrosEVidros.jpg"));
                }

                if (ReciboConfig.Relatorio.UsarParcelasPedido && pedido.IdPedido > 0)
                {
                    report.DataSources.Add(new ReportDataSource("ParcelasPedido", pedido.NumParc > 0 ? ParcelasPedidoDAO.Instance.GetByPedido(pedido.IdPedido) :
                                                                new ParcelasPedido[0]));
                }

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));
                break;

            case "reciboPgAntec":
                Sinal   sinal       = SinalDAO.Instance.GetSinalDetails(Glass.Conversoes.StrParaUint(Request["idPgAntecipado"]));
                Cliente clientePgto = ClienteDAO.Instance.GetElementByPrimaryKey(sinal.IdCliente);

                recibo                 = new Data.RelModel.Recibo();
                recibo.Tipo            = Glass.Conversoes.StrParaInt(Request["referente"]);
                recibo.IdSinal         = sinal.IdSinal;
                recibo.Cliente         = clientePgto.Nome;
                recibo.IdLoja          = (uint)FuncionarioDAO.Instance.GetElementByPrimaryKey(sinal.UsuCad).IdLoja;
                recibo.Total           = sinal.TotalSinal;
                recibo.Vendedor        = FuncionarioDAO.Instance.GetNome(sinal.UsuCad);
                recibo.Items           = outrosParametros[0].ToString();
                recibo.NumParcelas     = outrosParametros[1].ToString();
                recibo.ValorReferente  = Request["valorRef"];
                recibo.MotivoReferente = Request["motivoRef"];
                report.ReportPath      = Glass.Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));
                break;

            case "reciboAcerto":

                uint idAcerto = Request["idAcerto"] != "0" && Request["idAcerto"] != "" ? Glass.Conversoes.StrParaUint(Request["idAcerto"]) : 0;

                if (idAcerto > 0 && !AcertoDAO.Instance.Exists(idAcerto))
                {
                    Response.Write("O acerto informado não existe.");
                    return(null);
                }

                Acerto acerto = AcertoDAO.Instance.GetByCliList(Convert.ToInt32(idAcerto), 0, 0, 0, null, null, 0, 0, 0, 0, null, 0, 10)[0];

                recibo                 = new Data.RelModel.Recibo();
                recibo.Tipo            = Glass.Conversoes.StrParaInt(Request["referente"]);
                recibo.IdAcerto        = acerto.IdAcerto;
                recibo.Cliente         = ClienteDAO.Instance.GetNome(acerto.IdCli);
                recibo.IdLoja          = (uint)FuncionarioDAO.Instance.GetElementByPrimaryKey(acerto.UsuCad).IdLoja;
                recibo.Total           = acerto.TotalAcerto;
                recibo.Vendedor        = FuncionarioDAO.Instance.GetNome(acerto.UsuCad);
                recibo.Items           = outrosParametros[0].ToString();
                recibo.NumParcelas     = outrosParametros[1].ToString();
                recibo.ValorReferente  = Request["valorRef"];
                recibo.MotivoReferente = Request["motivoRef"];
                report.ReportPath      = Glass.Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));

                break;

            case "termoaceitacao":
                if (!PedidoDAO.Instance.PedidoExists(Glass.Conversoes.StrParaUint(Request["ped"])))
                {
                    Response.Write("O pedido informado não existe.");
                    return(null);
                }

                Glass.Data.Model.Pedido pedTermo = PedidoDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(Request["ped"]));

                if (pedTermo.IdOrcamento == null)
                {
                    pedTermo.IdOrcamento = 0;
                }

                pedTermo.InfoAdicional = Request["infAdic"]?.Replace("\\n", "\n") ?? string.Empty;

                report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/rptAceitacao{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("PedidoRpt", PedidoRptDAL.Instance.CopiaLista(new Glass.Data.Model.Pedido[] { pedTermo }, PedidoRpt.TipoConstrutor.TermoAceitacao, false, login)));
                break;

            case "riscoquebra":
                // Verifica se pedido passado existe
                if (!PedidoDAO.Instance.PedidoExists(Glass.Conversoes.StrParaUint(Request["idPedido"])))
                {
                    Response.Write("O pedido informado não existe.");
                    return(null);
                }

                var risco = new Data.RelModel.RiscoQuebra();
                Glass.Data.Model.Pedido ped = PedidoDAO.Instance.GetElementByPrimaryKey(Glass.Conversoes.StrParaUint(Request["idPedido"]));
                Cliente cli = ClienteDAO.Instance.GetElementByPrimaryKey(ped.IdCli);
                cli.Cidade       = CidadeDAO.Instance.GetNome((uint?)cli.IdCidade);
                risco.IdPedido   = ped.IdPedido;
                risco.NomeLoja   = LojaDAO.Instance.GetElementByPrimaryKey(ped.IdLoja).NomeFantasia;
                risco.CidadeData = LojaDAO.Instance.GetElement(ped.IdLoja).Cidade + " " + Formatacoes.DataExtenso(DateTime.Now);
                risco.Cliente    = cli.Nome;
                risco.Endereco   = !string.IsNullOrEmpty(ped.LocalizacaoObra) ? ped.LocalizacaoObra : cli.EnderecoCompleto;
                risco.Telefone   = cli.Telefone;
                risco.Texto      = Request["texto"];

                report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/rptRiscoQuebra{0}.rdlc");

                report.DataSources.Add(new ReportDataSource("RiscoQuebra", new Data.RelModel.RiscoQuebra[] { risco }));
                break;

            case "reciboContaPagar":
            {
                var idContaPagar = Request["idContaPagar"] != "0" && Request["idContaPagar"] != "" ? Glass.Conversoes.StrParaInt(Request["idContaPagar"]) : 0;
                var contaPg      = ContasPagarDAO.Instance.GetPagasForRpt(idContaPagar, 0, null, 0, 0, 0, 0, null, null, null, null, null, null, null, null, 0, 0, 0, false, true, false, null, false,
                                                                          false, 0, 0, null, null);

                if (contaPg.Length == 0)
                {
                    throw new Exception("A conta a pagar informada não existe ou não está paga.");
                }

                recibo = new Data.RelModel.Recibo();
                recibo.IdContaPagar    = idContaPagar;
                recibo.IdLoja          = contaPg[0].IdLoja.GetValueOrDefault(0);
                recibo.Total           = contaPg[0].ValorPago;
                recibo.Cliente         = FornecedorDAO.Instance.GetElementByPrimaryKey(contaPg[0].IdFornec.GetValueOrDefault(0)).Nome;
                recibo.MotivoReferente = contaPg[0].DescrPlanoConta;

                report.ReportPath = Glass.Data.Helper.Utils.CaminhoRelatorio("Relatorios/Genericos/ModeloRecibo/rptRecibo{0}.rdlc");
                recibo.Tipo       = Glass.Conversoes.StrParaInt(Request["referente"]);

                report.DataSources.Add(new ReportDataSource("Recibo", new Data.RelModel.Recibo[] { recibo }));

                break;
            }
            }

            // Atribui parâmetros ao relatório
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogoColor(PageRequest)));
            lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
            lstParam.Add(new ReportParameter("CorRodape", "DimGray"));

            return(null);
        }
예제 #16
0
        /// <summary>
        /// Consulta o cadastro de contribuintes do ICMS da unidade federada.
        /// </summary>
        public static string ConsultaSitCadastroContribuinte(string uf, string cpfCnpj)
        {
            if (string.IsNullOrEmpty(uf) || string.IsNullOrEmpty(cpfCnpj))
            {
                return("Contribuinte não encontrado.");
            }

            #region Monta XML

            XmlDocument xmlConsCad = new XmlDocument();

            XmlNode declarationNode = xmlConsCad.CreateXmlDeclaration("1.0", "UTF-8", null);
            xmlConsCad.AppendChild(declarationNode);

            XmlElement consCad = xmlConsCad.CreateElement("ConsCad");
            consCad.SetAttribute("versao", ConfigNFe.VersaoConsCad);
            consCad.SetAttribute("xmlns", "http://www.portalfiscal.inf.br/nfe");
            xmlConsCad.AppendChild(consCad);

            XmlElement infCons = xmlConsCad.CreateElement("infCons");
            consCad.AppendChild(infCons);

            ManipulacaoXml.SetNode(xmlConsCad, infCons, "xServ", "CONS-CAD");
            ManipulacaoXml.SetNode(xmlConsCad, infCons, "UF", uf);

            cpfCnpj = Formatacoes.LimpaCpfCnpj(cpfCnpj);

            if (cpfCnpj.Length == 11)
            {
                ManipulacaoXml.SetNode(xmlConsCad, infCons, "CPF", cpfCnpj);
            }
            else
            {
                ManipulacaoXml.SetNode(xmlConsCad, infCons, "CNPJ", cpfCnpj);
            }

            #endregion

            // Salva o callback padrão do WebService
            System.Net.Security.RemoteCertificateValidationCallback callback = System.Net.ServicePointManager.ServerCertificateValidationCallback;

            XmlNode xmlRetorno = null;

            try
            {
                // Altera o callback de validação do WebService
                System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors error)
                {
                    // Verifica se a data do certificado é válida
                    DateTime beginDate   = DateTime.Parse(cert.GetEffectiveDateString());
                    DateTime endDate     = DateTime.Parse(cert.GetExpirationDateString());
                    bool     isDateValid = (DateTime.Now >= beginDate) && (DateTime.Now <= endDate);

                    // Retorna o resultado da função
                    return(isDateValid);
                };

                // Envia o arquivo e recebe o retorno.
                xmlRetorno = EnviaXML.ObterXmlConsultaCadastroContribuinte(uf, xmlConsCad);
            }
            catch (Exception ex)
            {
                throw new Exception(Glass.MensagemAlerta.FormatErrorMsg("Falha ao chamar WebService.", ex));
            }
            finally
            {
                // Restaura o callback padrão para o WebService
                System.Net.ServicePointManager.ServerCertificateValidationCallback = callback;
            }

            if (xmlRetorno == null)
            {
                return("Falha ao comunicar com webservice da SEFAZ.");
            }

            XmlDocument xmlDocRetorno = new XmlDocument();
            xmlDocRetorno.ImportNode(xmlRetorno, true);

            XmlNamespaceManager nMgr = new XmlNamespaceManager(xmlDocRetorno.NameTable);
            nMgr.AddNamespace("nfe", "http://www.portalfiscal.inf.br/nfe");

            XmlNode infoCons  = xmlRetorno.SelectSingleNode("//nfe:infCons", nMgr);
            var     codStatus = infoCons?["cStat"]?.InnerText;

            var retorno = string.Empty;
            if (codStatus == "111" || codStatus == "112")
            {
                retorno += "Consulta Situação do Contribuinte no Sintegra\n\n";
                retorno += "Situação: ";

                if (infoCons["infCad"]["cSit"].InnerText == "1")
                {
                    retorno += "Habilitado.";
                }
                else
                {
                    retorno += "Não Habilitado.";
                }
            }
            else
            {
                retorno += "Falha na Consulta Situação do Contribuinte no Sintegra\n\n";
                retorno += "Código: " + codStatus + "\n";
                retorno += infoCons?["xMotivo"]?.InnerText;
            }

            ClienteDAO.Instance.AtualizaUltimaConsultaSintegra(cpfCnpj);

            return(retorno);
        }
예제 #17
0
        public override int Update(CartaCorrecao objUpdate)
        {
            objUpdate.Correcao = Formatacoes.TrataStringDocFiscal(objUpdate.Correcao);

            return(base.Update(objUpdate));
        }
예제 #18
0
        /// <summary>
        /// Retorna a referência de um item para o Log.
        /// </summary>
        public static string GetReferencia(GDASession session, TabelaAlteracao tabela, uint idRegistroAlt)
        {
            try
            {
                var referencia = string.Empty;

                switch (tabela)
                {
                case TabelaAlteracao.Cfop:
                    referencia = CfopDAO.Instance.ObtemValorCampo <string>(session, "codInterno", "idCfop=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.Cheque:
                    referencia = ChequesDAO.Instance.ObtemValorCampo <string>(session, "num", "idCheque=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.Cliente:
                    referencia = ClienteDAO.Instance.GetNome(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.ConfigLoja:
                    var idConfig = ConfiguracaoLojaDAO.Instance.ObtemValorCampo <uint>(session, "idConfig", "idConfigLoja=" + idRegistroAlt);
                    referencia = ConfiguracaoDAO.Instance.ObtemDescricao(session, idConfig);
                    break;

                case TabelaAlteracao.ControleUsuario:
                    referencia = FuncModuloDAO.Instance.GetByLog(session, idRegistroAlt).DescrModulo;
                    break;

                case TabelaAlteracao.DescontoAcrescimoCliente:
                    referencia = DescontoAcrescimoClienteDAO.Instance.GetElement(session, idRegistroAlt).DescricaoCompleta;
                    break;

                case TabelaAlteracao.Fornecedor:
                    referencia = FornecedorDAO.Instance.GetNome(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.Funcionario:
                    referencia = FuncionarioDAO.Instance.GetNome(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.GrupoProduto:
                    referencia = GrupoProdDAO.Instance.GetDescricao(session, (int)idRegistroAlt);
                    break;

                case TabelaAlteracao.NotaFiscal:
                    referencia = NotaFiscalDAO.Instance.ObtemNumerosNFePeloIdNf(session, idRegistroAlt.ToString());
                    break;

                case TabelaAlteracao.Produto:
                    referencia = ProdutoDAO.Instance.GetDescrProduto(session, (int)idRegistroAlt);
                    break;

                case TabelaAlteracao.ProdutoNotaFiscal:
                    var idNf   = ProdutosNfDAO.Instance.ObtemValorCampo <uint>(session, "idNf", "idProdNf=" + idRegistroAlt);
                    var idProd = ProdutosNfDAO.Instance.ObtemValorCampo <uint>(session, "idProd", "idProdNf=" + idRegistroAlt);
                    referencia = "Nota: " + GetReferencia(session, TabelaAlteracao.NotaFiscal, idNf) + "   Produto: " + GetReferencia(session, TabelaAlteracao.Produto, idProd);
                    break;

                case TabelaAlteracao.SubgrupoProduto:
                    var idGrupoProd = SubgrupoProdDAO.Instance.ObtemValorCampo <uint>(session, "idGrupoProd", "idSubgrupoProd=" + idRegistroAlt);
                    referencia = GrupoProdDAO.Instance.GetDescricao(session, (int)idGrupoProd) + " " + SubgrupoProdDAO.Instance.GetDescricao(session, (int)idRegistroAlt);
                    break;

                case TabelaAlteracao.UnidadeMedida:
                    referencia = UnidadeMedidaDAO.Instance.ObtemValorCampo <string>(session, "codigo", "idUnidadeMedida=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.Transportador:
                    referencia = TransportadorDAO.Instance.GetNome(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.ProdutoLoja:
                    var prodLoja = new ProdutoLoja();
                    prodLoja.IdLog = idRegistroAlt;
                    referencia     = "Produto: " + ProdutoDAO.Instance.GetDescrProduto(session, (int)prodLoja.IdProd) + "   Loja: " + LojaDAO.Instance.GetNome(session, (uint)prodLoja.IdLoja);
                    break;

                case TabelaAlteracao.MovBemAtivoImobilizado:
                    var mbai = MovimentacaoBemAtivoImobDAO.Instance.GetElement(session, idRegistroAlt);
                    referencia = "Nota Fiscal: " + mbai.NumeroNFe + " - " + mbai.DescrProd;
                    break;

                case TabelaAlteracao.Loja:
                    referencia = LojaDAO.Instance.GetNome(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.ProjetoModelo:
                    referencia = ProjetoModeloDAO.Instance.ObtemValorCampo <string>(session, "codigo", "idProjetoModelo=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.PosicaoPecaModelo:
                    referencia = "Info. " + PosicaoPecaModeloDAO.Instance.GetElement(session, idRegistroAlt).NumInfo;
                    break;

                case TabelaAlteracao.PecaProjetoModelo:
                    referencia = "Item " + PecaProjetoModeloDAO.Instance.ObtemValorCampo <string>(session, "item", "idPecaProjMod=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.MaterialProjetoModelo:
                    referencia = MaterialProjetoModeloDAO.Instance.GetElement(session, idRegistroAlt).DescrProdProj;
                    break;

                case TabelaAlteracao.GrupoModelo:
                    referencia = GrupoModeloDAO.Instance.ObtemValorCampo <string>(session, "descricao", "idGrupoModelo=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.PosicaoPecaIndividual:
                    referencia = "Info. " + PosicaoPecaIndividualDAO.Instance.GetElement(session, idRegistroAlt).NumInfo;
                    break;

                case TabelaAlteracao.ProdutoProjeto:
                    var idProd_Proj = ProdutoProjetoDAO.Instance.ObtemValorCampo <uint>(session, "idProd", "idProdProj=" + idRegistroAlt);
                    referencia = GetReferencia(session, TabelaAlteracao.Produto, idProd_Proj);
                    break;

                case TabelaAlteracao.ProdutoProjetoConfig:
                    var idProd_ProjConfig = ProdutoProjetoConfigDAO.Instance.ObtemValorCampo <uint>(session, "idProd", "idProdProjConfig=" + idRegistroAlt);
                    referencia = GetReferencia(session, TabelaAlteracao.Produto, idProd_ProjConfig);
                    break;

                case TabelaAlteracao.MedidaProjeto:
                    referencia = MedidaProjetoDAO.Instance.ObtemValorCampo <string>(session, "idMedidaProjeto", "idMedidaProjeto=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.Setor:
                    referencia = Utils.ObtemSetor(idRegistroAlt)?.Descricao ?? string.Empty;
                    break;

                case TabelaAlteracao.TipoPerda:
                    referencia = TipoPerdaDAO.Instance.GetNome(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.TipoCliente:
                    referencia = TipoClienteDAO.Instance.GetNome(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.BenefConfig:
                    referencia = BenefConfigDAO.Instance.GetDescrBenef(session, idRegistroAlt.ToString());
                    break;

                case TabelaAlteracao.BenefConfigPreco:
                    var idBenefConfig = BenefConfigPrecoDAO.Instance.ObtemIdBenefConfig(session, idRegistroAlt);
                    referencia = GetReferencia(session, TabelaAlteracao.BenefConfig, idBenefConfig);
                    break;

                case TabelaAlteracao.ImagemProducao:
                    PecaItemProjeto peca = PecaItemProjetoDAO.Instance.GetElementExt(session, idRegistroAlt / 100, true);
                    var             idProd_ImagemProd = peca.IdProdPed != null?ProdutosPedidoEspelhoDAO.Instance.ObtemValorCampo <uint>(session, "idProd", "idProdPed=" + peca.IdProdPed) : 0;

                    referencia = "Pedido: " + peca.IdPedido + "   Produto: " + (idProd_ImagemProd > 0 ? GetReferencia(session, TabelaAlteracao.Produto, idProd_ImagemProd) : string.Empty);
                    break;

                case TabelaAlteracao.SubtipoPerda:
                    referencia = SubtipoPerdaDAO.Instance.GetDescricao(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.Rota:
                    referencia = RotaDAO.Instance.ObtemValorCampo <string>(session, "codInterno", "idRota=" + idRegistroAlt);
                    break;

                case TabelaAlteracao.ProdutoFornecedor:
                    referencia = ProdutoFornecedorDAO.Instance.ObtemDescricao(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.LimiteChequeCpfCnpj:
                    referencia = Formatacoes.FormataCpfCnpj(LimiteChequeCpfCnpjDAO.Instance.ObtemValorCampo <string>(session, "cpfCnpj", "idLimiteCheque=" + idRegistroAlt));
                    break;

                case TabelaAlteracao.ChapaVidro:
                    referencia = ProdutoDAO.Instance.ObtemValorCampo <string>(session, "codInterno",
                                                                              "idProd=" + ChapaVidroDAO.Instance.ObtemValorCampo <uint>(session, "idProd", "idChapaVidro=" + idRegistroAlt));
                    break;

                case TabelaAlteracao.RetalhoProducao:
                    referencia = RetalhoProducaoDAO.Instance.ObtemNumeroEtiqueta(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.NaturezaOperacao:
                    referencia = NaturezaOperacaoDAO.Instance.ObtemCodigoCompleto(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.RegraNaturezaOperacao:
                    referencia = RegraNaturezaOperacaoDAO.Instance.ObtemDescricao(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.RoteiroProducao:
                    referencia = RoteiroProducaoDAO.Instance.ObtemDescricao(session, (int)idRegistroAlt);
                    break;

                case TabelaAlteracao.CapacidadeProducaoDiaria:
                    referencia = CapacidadeProducaoDiariaDAO.Instance.ObtemParaLog(session, idRegistroAlt).Data.ToString("dd/MM/yyyy");
                    break;

                case TabelaAlteracao.ControleCreditosEfd:
                    var item = ControleCreditoEfdDAO.Instance.GetElementByPrimaryKey(session, idRegistroAlt);
                    referencia = item.PeriodoGeracao + " - Imposto: " + item.DescrTipoImposto + (item.CodCred != null ? " - Cód. Cred.: " + item.DescrCodCred : "");
                    break;

                case TabelaAlteracao.ProdPedProducao:
                    referencia = ProdutoPedidoProducaoDAO.Instance.ObtemEtiqueta(session, idRegistroAlt);
                    break;

                case TabelaAlteracao.TipoCartao:
                    referencia = TipoCartaoCreditoDAO.Instance.GetElementByPrimaryKey(session, idRegistroAlt).Descricao;
                    break;

                case TabelaAlteracao.DepositoNaoIdentificado:
                    referencia = string.Format("DNI: {0}", idRegistroAlt);
                    break;

                case TabelaAlteracao.ConfiguracaoAresta:
                    referencia = "Aresta";
                    break;

                case TabelaAlteracao.CartaoNaoIdentificado:
                    referencia = string.Format("CNI: {0}", idRegistroAlt);
                    break;

                case TabelaAlteracao.GrupoMedidaProjeto:
                    referencia = string.Format("Grupo de Medida de Projeto: {0}", idRegistroAlt);
                    break;

                case TabelaAlteracao.DescontoFormaPagamentoDadosProduto:
                    referencia = string.Format("Desconto por Forma de Pagamento e Dados do Produto: {0}", idRegistroAlt);
                    break;

                case TabelaAlteracao.ContaPagar:
                    referencia = string.Format("Conta a pagar/paga: {0}", idRegistroAlt);
                    break;

                case TabelaAlteracao.Obra:
                    referencia = string.Format("Obra: {0}", idRegistroAlt);
                    break;

                case TabelaAlteracao.ImpostoServico:
                    referencia = string.Format("Imposto/Serviço: {0}", idRegistroAlt);
                    break;

                case TabelaAlteracao.Medicao:
                    referencia = string.Format("Medição: {0}", idRegistroAlt);
                    break;

                default:
                    referencia = idRegistroAlt.ToString();
                    break;

                case TabelaAlteracao.GrupoCliente:
                    referencia = GrupoClienteDAO.Instance.GetNome(session, idRegistroAlt);
                    break;
                }

                if (!string.IsNullOrEmpty(referencia) && referencia.Length > 100)
                {
                    referencia = referencia.Substring(0, 100);
                }

                return(referencia);
            }
            catch
            {
                return(string.Empty);
            }
        }
예제 #19
0
        /// <summary>
        /// Busca XML da NFe passada para imprimir o DANFE
        /// </summary>
        /// <param name="idNFe"></param>
        /// <returns></returns>
        internal NFe GetForDanfe(HttpContext context, string chaveAcesso)
        {
            NFe nfe = new NFe();

            // Verifica se NFe existe
            if (!File.Exists(Utils.GetNfeXmlPathInternal(context) + chaveAcesso + "-nfe.xml"))
            {
                throw new Exception("Arquivo da NF-e não encontrado.");
            }

            // Busca arquivo XML da NFe
            XmlDocument xmlNFe = new XmlDocument();

            xmlNFe.Load(Utils.GetNfeXmlPathInternal(context) + chaveAcesso + "-nfe.xml");
            XmlElement xmlInfNFe = GetXmlInfNFe(context, xmlNFe);

            var versao = xmlNFe["nfeProc"] != null ?
                         xmlNFe["nfeProc"]["NFe"]["infNFe"].GetAttribute("versao") :
                         xmlNFe["NFe"]["infNFe"].GetAttribute("versao");

            #region Busca dados do XML da NF-e

            // Cabeçalho
            nfe.RazaoSocialEmit = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "emit", "xNome"));
            nfe.NumeroNfe       = Formatacoes.MascaraNroNFe(GetNodeValue(xmlInfNFe, "ide", "nNF"));
            nfe.SerieNfe        = GetNodeValue(xmlInfNFe, "ide", "serie");
            nfe.ModeloNfe       = GetNodeValue(xmlInfNFe, "ide", "mod");
            nfe.EnderecoEmit    = Formatacoes.RestauraStringDocFiscal(GetEnderecoEmit(xmlInfNFe));
            nfe.TipoNfe         = GetNodeValue(xmlInfNFe, "ide", "tpNF");
            nfe.TipoAmbiente    = Glass.Conversoes.StrParaInt(GetNodeValue(xmlInfNFe, "ide", "tpAmb"));
            nfe.ChaveAcesso     = Formatacoes.MascaraChaveAcessoNFe(chaveAcesso);
            nfe.UfNfe           = Glass.Conversoes.StrParaInt(GetNodeValue(xmlInfNFe, "ide", "cUF"));
            nfe.TipoEmissao     = Glass.Conversoes.StrParaInt(GetNodeValue(xmlInfNFe, "ide", "tpEmis"));

            // Dados da NF-e
            nfe.NatOperacao   = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "ide", "natOp"));
            nfe.InscEstEmit   = GetNodeValue(xmlInfNFe, "emit", "IE");
            nfe.InscEstStEmit = GetNodeValue(xmlInfNFe, "emit", "IEST");
            nfe.CnpjEmit      = Formatacoes.MascaraCnpj(GetNodeValue(xmlInfNFe, "emit", "CNPJ"));

            if (xmlNFe["NFe"] != null && xmlNFe["NFe"]["infProt"] != null) // Sql montado no sistema
            {
                nfe.ProtAutorizacao = GetNodeValue(xmlNFe["NFe"], "infProt", "nProt") + " " + GetNodeValue(xmlNFe["NFe"], "infProt", "dhRecbto").Replace("T", " ");
            }
            else if (xmlNFe["nfeProc"] != null && xmlNFe["nfeProc"]["protNFe"] != null) // Sql montado na receita
            {
                nfe.ProtAutorizacao = GetNodeValue(xmlNFe["nfeProc"]["protNFe"], "infProt", "nProt") + " " + GetNodeValue(xmlNFe["nfeProc"]["protNFe"], "infProt", "dhRecbto").Replace("T", " ");
            }

            // Preencher a partir do banco até mudarmos para baixar o xml direto da receita com o protocolo, caso a nota fique sem após a autorização
            if (string.IsNullOrEmpty(nfe.ProtAutorizacao))
            {
                nfe.ProtAutorizacao = DAL.NotaFiscalDAO.Instance.ObtemValorCampo <string>("NumProtocolo", "ChaveAcesso=?chaveAcesso", new GDA.GDAParameter("?chaveAcesso", chaveAcesso));
            }

            // Esta verificação não pode ser feita ao pré-visualizar nota
            //if (String.IsNullOrEmpty(nfe.ProtAutorizacao))
            //    throw new Exception("Nota sem protocolo.");

            // Destinatário/Remetente
            nfe.RazaoSocialRemet = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "dest", "xNome"));
            nfe.CpfCnpjRemet     = Formatacoes.MascaraCpfCnpj(GetNodeValue(xmlInfNFe, "dest", "CNPJ") + GetNodeValue(xmlInfNFe, "dest", "CPF"));
            nfe.EnderecoRemet    = Formatacoes.RestauraStringDocFiscal((GetNodeValue(xmlInfNFe, "dest/enderDest", "xLgr") + ", " + GetNodeValue(xmlInfNFe, "dest/enderDest", "nro") + " " + GetNodeValue(xmlInfNFe, "dest/enderDest", "xCpl")));
            nfe.BairroRemet      = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "dest/enderDest", "xBairro"));
            nfe.CepRemet         = GetNodeValue(xmlInfNFe, "dest/enderDest", "CEP");
            nfe.MunicipioRemet   = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "dest/enderDest", "xMun"));
            nfe.FoneRemet        = GetNodeValue(xmlInfNFe, "dest/enderDest", "fone");
            nfe.UfRemet          = GetNodeValue(xmlInfNFe, "dest/enderDest", "UF");
            nfe.InscEstRemet     = GetNodeValue(xmlInfNFe, "dest", "IE");
            try
            {
                nfe.DataEmissao         = DateTime.Parse(GetNodeValue(xmlInfNFe, "ide", "dhEmi")).ToString("dd/MM/yyyy HH:mm:ss");
                nfe.DataEmissaoOriginal = GetNodeValue(xmlInfNFe, "ide", "dhEmi");
            }
            catch { }
            try
            {
                nfe.DataEntradaSaida = DateTime.Parse(GetNodeValue(xmlInfNFe, "ide", "dhSaiEnt")).ToString("dd/MM/yyyy HH:mm");
            }
            catch { }

            // Fatura/Duplicatas
            if (DAL.NotaFiscalDAO.Instance.ObtemFormaPagto(chaveAcesso) == Model.NotaFiscal.FormaPagtoEnum.AVista) // Pagamento à vista
            {
                string nFat  = GetNodeValue(xmlInfNFe, "cobr/fat", "nFat");
                string vOrig = GetNodeValue(xmlInfNFe, "cobr/fat", "vOrig");
                string vLiq  = GetNodeValue(xmlInfNFe, "cobr/fat", "vLiq");

                nfe.Fatura = "Pagamento à vista / Num.: " + nFat + " / V. Orig.: " + vOrig.Replace('.', ',') + " / V. Liq.: " + vLiq.Replace('.', ',');
            }
            else if (xmlInfNFe["cobr"] != null) // Pagamento à prazo/outros
            {
                // Busca tags com duplicatas
                XmlNodeList xmlListDup = xmlInfNFe["cobr"].GetElementsByTagName("dup");

                string nFat = xmlInfNFe["cobr"]["fat"] != null?GetNodeValue(xmlInfNFe, "cobr/fat", "nFat") : string.Empty;

                foreach (XmlElement xmlDup in xmlListDup)
                {
                    nfe.Fatura +=
                        "Num.: " + nFat + "-" + xmlDup["nDup"].InnerXml +
                        " Venc.: " + DateTime.Parse(xmlDup["dVenc"].InnerXml).ToString("dd/MM/yyyy") +
                        " Valor: " + xmlDup["vDup"].InnerXml.Replace('.', ',') + "   /   ";
                }

                if (nfe.Fatura != null)
                {
                    nfe.Fatura = nfe.Fatura.TrimEnd(' ').TrimEnd('/');
                }
            }

            // Cálculo do Imposto
            nfe.BcIcms         = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vBC"), 2);
            nfe.VlrIcms        = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vICMS"), 2);
            nfe.BcIcmsSt       = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vBCST"), 2);
            nfe.VlrIcmsSt      = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vST"), 2);
            nfe.VlrFrete       = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vFrete"), 2);
            nfe.VlrSeguro      = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vSeg"), 2);
            nfe.Desconto       = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vDesc"), 2);
            nfe.OutrasDespesas = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vOutro"), 2);
            nfe.VlrIpi         = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vIPI"), 2);
            nfe.VlrTotalProd   = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vProd"), 2);
            nfe.VlrTotalNota   = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ICMSTot", "vNF"), 2);

            // Transportador/Volumes transportados
            string modFrete = GetNodeValue(xmlInfNFe, "transp", "modFrete");
            nfe.RazaoSocialTransp = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "transp/transporta", "xNome"));
            nfe.CpfCnpjTransp     = Formatacoes.MascaraCpfCnpj(GetNodeValue(xmlInfNFe, "transp/transporta", "CNPJ") + GetNodeValue(xmlInfNFe, "transp/transporta", "CPF"));

            switch ((Model.ModalidadeFrete)(modFrete.StrParaInt()))
            {
            case Model.ModalidadeFrete.ContaDoRemetente: nfe.FretePorConta = "0 - Rem (CIF)"; break;

            case Model.ModalidadeFrete.ContaDoDestinatario: nfe.FretePorConta = "1 - Dest (FOB)"; break;

            case Model.ModalidadeFrete.ContaDeTerceiros: nfe.FretePorConta = "2 - Terceiros"; break;

            case Model.ModalidadeFrete.ProprioContaDoRemetente: nfe.FretePorConta = "3 - Prop Rem"; break;

            case Model.ModalidadeFrete.ProprioContaDoDestinatario: nfe.FretePorConta = "4 - Prop Dest"; break;

            case Model.ModalidadeFrete.SemTransporte: nfe.FretePorConta = "9 - Sem Ocorr"; break;

            default: break;
            }

            nfe.CodAntt         = GetNodeValue(xmlInfNFe, "transp/veicTransp", "RNTC");
            nfe.PlacaVeiculo    = GetNodeValue(xmlInfNFe, "transp/veicTransp", "placa");
            nfe.UfVeiculo       = GetNodeValue(xmlInfNFe, "transp/veicTransp", "UF");
            nfe.EnderecoTransp  = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "transp/transporta", "xEnder"));
            nfe.MunicipioTransp = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "transp/transporta", "xMun"));
            nfe.UfTransp        = GetNodeValue(xmlInfNFe, "transp/transporta", "UF");
            nfe.InscEstTransp   = GetNodeValue(xmlInfNFe, "transp/transporta", "IE");
            nfe.QtdTransp       = GetNodeValue(xmlInfNFe, "transp/vol", "qVol");
            nfe.EspecieTransp   = GetNodeValue(xmlInfNFe, "transp/vol", "esp");
            nfe.MarcaTransp     = GetNodeValue(xmlInfNFe, "transp/vol", "marca");
            nfe.NumeracaoTransp = GetNodeValue(xmlInfNFe, "transp/vol", "nVol");
            nfe.PesoLiquido     = GetNodeValue(xmlInfNFe, "transp/vol", "pesoL");
            nfe.PesoBruto       = GetNodeValue(xmlInfNFe, "transp/vol", "pesoB");

            // Cálculo do ISSQN
            nfe.InscMunicIssqn        = GetNodeValue(xmlInfNFe, "emit/enderEmit", "IM");
            nfe.VlrTotalServicosIssqn = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ISSQNtot", "vServ"), 2);
            nfe.BcIssqn  = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ISSQNtot", "vBC"), 2);
            nfe.VlrIssqn = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfNFe, "total/ISSQNtot", "vISS"), 2);

            // Dados adicionais
            nfe.InformacoesCompl = (!string.IsNullOrEmpty(GetNodeValue(xmlInfNFe, "infAdic", "infAdFisco")) ? GetNodeValue(xmlInfNFe, "infAdic", "infAdFisco") + "\r\n" : "") +
                                   (!string.IsNullOrEmpty(GetNodeValue(xmlInfNFe, "infAdic", "infCpl")) ? Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfNFe, "infAdic", "infCpl")) + "\r\n" : "") +
                                   (ConfigNFe.TipoAmbiente == ConfigNFe.TipoAmbienteNfe.Producao || nfe.ModeloNfe == "65" ? string.Empty : "SEM VALOR FISCAL.");

            // Dados de controle
            nfe.Crt = GetNodeValue(xmlInfNFe, "emit", "CRT");

            //NFC-e
            if (nfe.ModeloNfe == "65")
            {
                var xmlSignature = GetXmlSignature(context, xmlNFe);
                if (xmlSignature != null)
                {
                    nfe.DigestValue = GetNodeValue(xmlSignature, "SignedInfo/Reference", "DigestValue");

                    nfe.LinkQrCode = GetXmlInfNFeSupl(context, xmlNFe)["qrCode"].InnerText;
                    nfe.UrlChave   = GetXmlInfNFeSupl(context, xmlNFe)["urlChave"].InnerText;
                }
            }

            #endregion

            return(nfe);
        }
예제 #20
0
        /// <summary>
        /// Busca XML do CTe passado para imprimir o DACTE
        /// </summary>
        /// <param name="context"></param>
        /// <param name="chaveAcesso"></param>
        /// <returns></returns>
        internal static CTe GetForDacte(HttpContext context, string chaveAcesso)
        {
            CTe cte = new CTe();

            Glass.Data.Model.Cte.ConhecimentoTransporte _cte = Glass.Data.DAL.CTe.ConhecimentoTransporteDAO.Instance.GetByChaveAcesso(chaveAcesso);

            // Verifica se CTe existe
            if (!File.Exists(Utils.GetCteXmlPathInternal(context) + chaveAcesso + "-cte.xml"))
            {
                throw new Exception("Arquivo do CT-e não encontrado.");
            }

            // Busca arquivo XML do CTe
            XmlDocument xmlCTe = new XmlDocument();

            xmlCTe.Load(Utils.GetCteXmlPathInternal(context) + chaveAcesso + "-cte.xml");
            XmlElement xmlInfCTe = GetXmlInfCTe(context, xmlCTe);

            #region Busca dados do XML do CT-e

            // Identificação do Emitente
            cte.RazaoSocialEmit = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "emit", "xNome"));
            cte.EnderecoEmit    = Formatacoes.RestauraStringDocFiscal(GetEnderecoEmit(xmlInfCTe));
            cte.CnpjCpfEmitente = Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "emit", "CNPJ"));
            cte.InscEstEmitente = GetNodeValue(xmlInfCTe, "emit", "IE");

            //Modal
            cte.Modal = "RODOVIÁRIO";

            //Modelo
            cte.Modelo = GetNodeValue(xmlInfCTe, "ide", "mod");

            //Série
            cte.SerieCte = GetNodeValue(xmlInfCTe, "ide", "serie");

            //Número
            cte.NumeroCte = Formatacoes.MascaraNroCTe(GetNodeValue(xmlInfCTe, "ide", "nCT"));

            //Tipo Ambiente
            cte.TipoAmbiente = Glass.Conversoes.StrParaInt(GetNodeValue(xmlInfCTe, "ide", "tpAmb"));

            //Data e hora de emissão
            cte.DHEmissao = GetNodeValue(xmlInfCTe, "ide", "dhEmi");

            cte.FormaEmissao = GetNodeValue(xmlInfCTe, "ide", "tpEmis");

            //Inscrição Suframa Destinatário
            cte.InscSuframa = GetNodeValue(xmlInfCTe, "dest", "ISUF");

            //Chave de acesso
            cte.ChaveAcesso = Formatacoes.MascaraChaveAcessoCTe(chaveAcesso);

            //Protocolo de autorização
            if (xmlCTe["CTe"] != null && xmlCTe["CTe"]["infProt"] != null) // Sql montado no sistema
            {
                cte.ProtocoloAutorizacao = GetNodeValue(xmlCTe["CTe"], "infProt", "nProt") + " " + GetNodeValue(xmlCTe["CTe"], "infProt", "dhRecbto").Replace("T", " ");
            }
            else if (xmlCTe["cteProc"] != null && xmlCTe["cteProc"]["protCte"] != null) // Sql montado na receita
            {
                cte.ProtocoloAutorizacao = GetNodeValue(xmlCTe["cteProc"]["protCte"], "infProt", "nProt") + " " + GetNodeValue(xmlCTe["cteProc"]["protCte"], "infProt", "dhRecbto").Replace("T", " ");
            }

            //Tipo Cte
            var tipoCte = GetNodeValue(xmlInfCTe, "ide", "tpCTe");
            cte.TipoCte = tipoCte == "0" ? "Normal" : tipoCte == "1" ? "Complemento Valores" : tipoCte == "2" ? "Anulação Valores" : "Substituto";

            //Tipo Servico
            var tipoServico = GetNodeValue(xmlInfCTe, "ide", "tpServ");
            cte.TipoServico = tipoServico == "0" ? "Normal" : tipoServico == "1" ? "Subcontratação" : tipoServico == "2" ? "Redespacho" : "Redespacho Intermediário";

            //CFOP - natureza operação
            cte.NatOperacao = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "ide", "natOp"));

            var codInternoCfop = GetNodeValue(xmlInfCTe, "ide", "CFOP");

            var cfop = new GDA.Sql.Query("CodInterno=?codInterno")
                       .Add("?codInterno", codInternoCfop)
                       .First <Glass.Data.Model.Cfop>();

            //Origem prestação
            cte.OrigemPrestacao = GetNodeValue(xmlInfCTe, "ide", "UFIni") + "-" + GetNodeValue(xmlInfCTe, "ide", "xMunIni");

            //Destino prestação
            cte.DestinoPrestacao = GetNodeValue(xmlInfCTe, "ide", "UFFim") + "-" + GetNodeValue(xmlInfCTe, "ide", "xMunFim");

            //Campo de uso livre do contribuinte
            cte.InformacoesAdicionais = GetNodeValue(xmlInfCTe, "compl", "xObs") + "\n" + cfop.Obs;

            //Remetente
            cte.Remetente    = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "rem", "xNome"));
            cte.EnderecoRem  = GetEnderecoRem(xmlInfCTe);
            cte.MunicipioRem = GetNodeValue(xmlInfCTe, "rem/enderReme", "xMun");
            cte.CepRem       = GetNodeValue(xmlInfCTe, "rem/enderReme", "CEP");
            cte.CnpjCpfRem   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "rem", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "rem", "CPF"))
                : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "rem", "CNPJ"));
            cte.InscEstRem = GetNodeValue(xmlInfCTe, "rem", "IE");
            cte.UFRem      = GetNodeValue(xmlInfCTe, "rem/enderReme", "UF");
            cte.PaisRem    = GetNodeValue(xmlInfCTe, "rem/enderReme", "xPais");
            cte.FoneRem    = GetNodeValue(xmlInfCTe, "rem", "fone");

            //Destinatário
            cte.Destinatario  = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "dest", "xNome"));
            cte.EnderecoDest  = GetEnderecoDest(xmlInfCTe);
            cte.MunicipioDest = GetNodeValue(xmlInfCTe, "dest/enderDest", "xMun");
            cte.CepDest       = GetNodeValue(xmlInfCTe, "dest/enderDest", "CEP");
            cte.CnpjCpfDest   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "dest", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "dest", "CPF"))
                : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "dest", "CNPJ"));
            cte.InscEstDest = GetNodeValue(xmlInfCTe, "dest", "IE");
            cte.UFDest      = GetNodeValue(xmlInfCTe, "dest/enderDest", "UF");
            cte.PaisDest    = GetNodeValue(xmlInfCTe, "dest/enderDest", "xPais");
            cte.FoneDest    = GetNodeValue(xmlInfCTe, "dest", "fone");

            //Expedidor
            cte.Expedidor     = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "exped", "xNome"));
            cte.EnderecoExped = GetEnderecoExped(xmlInfCTe);
            cte.MunicipioExpd = GetNodeValue(xmlInfCTe, "exped/enderExped", "xMun");
            cte.CepExped      = GetNodeValue(xmlInfCTe, "exped/enderExped", "CEP");
            cte.CnpjCpfExped  = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "exped", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "exped", "CPF"))
                : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "exped", "CNPJ"));
            cte.InscEstExped = GetNodeValue(xmlInfCTe, "exped", "IE");
            cte.UFExped      = GetNodeValue(xmlInfCTe, "exped/enderExped", "UF");
            cte.PaisExped    = GetNodeValue(xmlInfCTe, "exped/enderExped", "xPais");
            cte.FoneExped    = GetNodeValue(xmlInfCTe, "exped", "fone");

            //Recebedor
            cte.Recebedor      = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "receb", "xNome"));
            cte.EnderecoReceb  = GetEnderecoReceb(xmlInfCTe);
            cte.MunicipioReceb = GetNodeValue(xmlInfCTe, "receb/enderReceb", "xMun");
            cte.CepReceb       = GetNodeValue(xmlInfCTe, "receb/enderReceb", "CEP");
            cte.CnpjCpfReceb   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "receb", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "receb", "CPF"))
                : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "receb", "CNPJ"));
            cte.InscEstReceb = GetNodeValue(xmlInfCTe, "receb", "IE");
            cte.UFReceb      = GetNodeValue(xmlInfCTe, "receb/enderReceb", "UF");
            cte.PaisReceb    = GetNodeValue(xmlInfCTe, "receb/enderReceb", "xPais");
            cte.FoneReceb    = GetNodeValue(xmlInfCTe, "receb", "fone");

            //Tomador

            var tipoTomador = GetNodeValue(xmlInfCTe, "ide/toma3", "toma");
            cte.TipoTomador = tipoTomador;
            //se tomador for remetente (0)
            if (tipoTomador == "0")
            {
                cte.Tomador       = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "rem", "xNome"));
                cte.EnderecoToma  = GetEnderecoRem(xmlInfCTe);
                cte.MunicipioToma = GetNodeValue(xmlInfCTe, "rem/enderReme", "xMun");
                cte.CepToma       = GetNodeValue(xmlInfCTe, "rem/enderReme", "CEP");
                cte.CnpjCpfToma   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "rem", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "rem", "CPF"))
                    : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "rem", "CNPJ"));
                cte.InscEstToma = GetNodeValue(xmlInfCTe, "rem", "IE");
                cte.UFToma      = GetNodeValue(xmlInfCTe, "rem/enderReme", "UF");
                cte.PaisToma    = GetNodeValue(xmlInfCTe, "rem/enderReme", "xPais");
                cte.FoneToma    = GetNodeValue(xmlInfCTe, "rem", "fone");
            }
            //se tomador for expedidor (1)
            else if (tipoTomador == "1")
            {
                cte.Tomador       = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "exped", "xNome"));
                cte.EnderecoToma  = GetEnderecoExped(xmlInfCTe);
                cte.MunicipioToma = GetNodeValue(xmlInfCTe, "exped/enderExped", "xMun");
                cte.CepToma       = GetNodeValue(xmlInfCTe, "exped/enderExped", "CEP");
                cte.CnpjCpfToma   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "exped", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "exped", "CPF"))
                    : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "exped", "CNPJ"));
                cte.InscEstToma = GetNodeValue(xmlInfCTe, "exped", "IE");
                cte.UFToma      = GetNodeValue(xmlInfCTe, "exped/enderExped", "UF");
                cte.PaisToma    = GetNodeValue(xmlInfCTe, "exped/enderExped", "xPais");
                cte.FoneToma    = GetNodeValue(xmlInfCTe, "exped", "fone");
            }
            //se tomador for recebedor (2)
            else if (tipoTomador == "2")
            {
                cte.Tomador       = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "receb", "xNome"));
                cte.EnderecoToma  = GetEnderecoReceb(xmlInfCTe);
                cte.MunicipioToma = GetNodeValue(xmlInfCTe, "receb/enderReceb", "xMun");
                cte.CepToma       = GetNodeValue(xmlInfCTe, "receb/enderReceb", "CEP");
                cte.CnpjCpfToma   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "receb", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "receb", "CPF"))
                    : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "receb", "CNPJ"));
                cte.InscEstToma = GetNodeValue(xmlInfCTe, "receb", "IE");
                cte.UFToma      = GetNodeValue(xmlInfCTe, "receb/enderReceb", "UF");
                cte.PaisToma    = GetNodeValue(xmlInfCTe, "receb/enderReceb", "xPais");
                cte.FoneToma    = GetNodeValue(xmlInfCTe, "receb", "fone");
            }
            //se tomador for destinatário (3)
            else if (tipoTomador == "3")
            {
                cte.Tomador       = Formatacoes.RestauraStringDocFiscal(GetNodeValue(xmlInfCTe, "dest", "xNome"));
                cte.EnderecoToma  = GetEnderecoDest(xmlInfCTe);
                cte.MunicipioToma = GetNodeValue(xmlInfCTe, "dest/enderDest", "xMun");
                cte.CepToma       = GetNodeValue(xmlInfCTe, "dest/enderDest", "CEP");
                cte.CnpjCpfToma   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "dest", "CPF")) ? Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "dest", "CPF"))
                    : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "dest", "CNPJ"));
                cte.InscEstToma = GetNodeValue(xmlInfCTe, "dest", "IE");
                cte.UFToma      = GetNodeValue(xmlInfCTe, "dest/enderDest", "UF");
                cte.PaisToma    = GetNodeValue(xmlInfCTe, "dest/enderDest", "xPais");
                cte.FoneToma    = GetNodeValue(xmlInfCTe, "dest", "fone");
            }

            // Produto Predominante
            cte.ProdutoPredominante = GetNodeValue(xmlInfCTe, "infCTeNorm/infCarga", "proPred");

            // Outras caracteristicas da carga
            if (GetNodeValue(xmlInfCTe, "infCTeNorm/infCarga", "xOutCat") != null)
            {
                cte.OutCarctCarga = GetNodeValue(xmlInfCTe, "infCTeNorm/infCarga", "xOutCat");
            }

            cte.ValorTotalMercadoria = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "infCTeNorm/infCarga", "vCarga"), 2);

            // Produto Predominante
            cte.PesoBruto = GetNodeValue(xmlInfCTe, "infCTeNorm/infCarga", "proPred");

            //infCarga
            //var infCarga = xmlInfCTe["infCTeNorm"].GetElementsByTagName("infCarga");

            XmlNodeList xmlListInfCarga = xmlInfCTe["infCTeNorm"].GetElementsByTagName("infQ");
            if (xmlListInfCarga.Count > 0)
            {
                var listaInfCarga = new List <InfoCargaCte>();

                foreach (XmlElement xmlInfo in xmlListInfCarga)
                {
                    var infoCarga = new InfoCargaCte
                    {
                        Quantidade  = Glass.Conversoes.StrParaFloat(xmlInfo.GetElementsByTagName("qCarga")[0].InnerText),
                        TipoMedida  = xmlInfo.GetElementsByTagName("tpMed")[0].InnerText,
                        TipoUnidade = Glass.Conversoes.StrParaInt(xmlInfo.GetElementsByTagName("cUnid")[0].InnerText)
                    };

                    listaInfCarga.Add(infoCarga);
                }
                cte.ListaInfoCargaCte = listaInfCarga;
            }

            //Seguradoras
            var respSeg = GetNodeValue(xmlInfCTe, "infCTeNorm/seg", "respSeg");
            cte.ResponsavelSeguro = respSeg == "0" ? "Remetente" : respSeg == "1" ? "Expedidor" : respSeg == "2" ? "Recebedor"
                : respSeg == "3" ? "Destinatário" : respSeg == "4" ? "Emitente" : "Tomador";
            cte.NomeSeguradora = GetNodeValue(xmlInfCTe, "infCTeNorm/seg", "xSeg");
            cte.NumApolice     = GetNodeValue(xmlInfCTe, "infCTeNorm/seg", "nApol");
            cte.NumAverbacao   = GetNodeValue(xmlInfCTe, "infCTeNorm/seg", "nAver");

            //Componentes valor
            XmlNodeList xmlListaComponenteValor = xmlInfCTe["vPrest"].GetElementsByTagName("Comp");
            if (xmlListaComponenteValor.Count > 0)
            {
                var listaComponentes = new List <ComponenteValorCte>();

                foreach (XmlElement xmlComp in xmlListaComponenteValor)
                {
                    var componente = new ComponenteValorCte
                    {
                        NomeComponente  = xmlComp.GetElementsByTagName("xNome")[0].InnerText,
                        ValorComponente = Glass.Conversoes.StrParaDecimal(xmlComp.GetElementsByTagName("vComp")[0].InnerText)
                    };
                    listaComponentes.Add(componente);
                }
                cte.ListaComponentes = listaComponentes;
            }

            cte.ValorTotalServicoComponente = Glass.Conversoes.StrParaDecimal(GetNodeValue(xmlInfCTe, "vPrest", "vTPrest"));
            cte.ValorReceberComponente      = Glass.Conversoes.StrParaDecimal(GetNodeValue(xmlInfCTe, "vPrest", "vRec"));

            //Informações relativas ao imposto
            if (!string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "imp/ICMS", "ICMS00")))
            {
                cte.SubstituicaoTributaria = "00 - tributação normal ICMS";
                cte.BaseCalculo            = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS00", "vBC"), 2);
                cte.AliquotaIcms           = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS00", "pICMS"), 2);
                cte.ValorIcms = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS00", "vICMS"), 2);
            }
            else if (!string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "imp/ICMS", "ICMS20")))
            {
                cte.SubstituicaoTributaria = "20 - tributação com BC reduzida do ICMS";
                cte.BaseCalculo            = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS20", "vBC"), 2);
                cte.AliquotaIcms           = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS20", "pICMS"), 2);
                cte.ValorIcms          = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS20", "vICMS"), 2);
                cte.ReducaoBaseCalculo = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS20", "pRedBC"), 2);
            }
            else if (!string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "imp/ICMS", "ICMS60")))
            {
                cte.SubstituicaoTributaria = "60 - ICMS cobrado anteriormente por substituição tributária";
                cte.IcmsST = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS60", "vICMSSTRet"), 2);
            }
            else if (!string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "imp/ICMS", "ICMS90")))
            {
                cte.SubstituicaoTributaria = "90 - ICMS outros ";
                cte.BaseCalculo            = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS90", "vBC"), 2);
                cte.AliquotaIcms           = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS90", "pICMS"), 2);
                cte.ValorIcms = Formatacoes.FormataValorDecimal(GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS90", "vICMS"), 2);
            }
            else if (!string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "imp/ICMS", "ICMS45")))
            {
                switch (GetNodeValue(xmlInfCTe, "imp/ICMS/ICMS45", "CST"))
                {
                case "40":
                    cte.SubstituicaoTributaria = "40 - ICMS isenção";
                    break;

                case "41":
                    cte.SubstituicaoTributaria = "41 - ICMS não tributada";
                    break;

                case "51":
                    cte.SubstituicaoTributaria = "51 - ICMS diferido";
                    break;
                }
            }

            if (xmlInfCTe["infCTeNorm"]["infDoc"] != null)
            {
                //Documentos Originários
                if (xmlInfCTe["infCTeNorm"]["infDoc"]["infNF"] != null)
                {
                    var xmlListaDocumentosOriginarios = xmlInfCTe["infCTeNorm"]["infDoc"].GetElementsByTagName("infNF");

                    if (xmlListaDocumentosOriginarios.Count > 0)
                    {
                        var cpfCnpjDocsOriginarios = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "rem", "CPF")) ?
                                                     Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "rem", "CPF")) : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "rem", "CNPJ"));

                        var listaDocsOriginarios = new List <NotaFiscalCte>();
                        int cont = 0;

                        foreach (XmlElement xmlDocOriginario in xmlListaDocumentosOriginarios)
                        {
                            var docsOriginarios = new NotaFiscalCte
                            {
                                TipoDoc       = "NF",
                                DocEmitenteNf = cpfCnpjDocsOriginarios,
                                Serie         = xmlDocOriginario.GetElementsByTagName("serie")[cont].InnerText,
                                NumeroDoc     = xmlDocOriginario.GetElementsByTagName("nDoc")[cont].InnerText
                            };

                            cont++;

                            listaDocsOriginarios.Add(docsOriginarios);
                        }
                        cte.ListaDocumentosOriginarios = listaDocsOriginarios;
                    }
                }

                //Documentos Originários
                else if (xmlInfCTe["infCTeNorm"]["infDoc"]["infNFe"] != null &&
                         xmlInfCTe["infCTeNorm"]["infDoc"]["infNFe"]["chave"] != null)
                {
                    var xmlListaDocumentosOriginariosNfe = xmlInfCTe["infCTeNorm"]["infDoc"].GetElementsByTagName("infNFe");
                    if (xmlListaDocumentosOriginariosNfe.Count > 0)
                    {
                        var cpfCnpjDocsOriginarios = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "rem", "CPF")) ?
                                                     Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "rem", "CPF")) : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "rem", "CNPJ"));

                        var listaDocsOriginarios = new List <NotaFiscalCte>();

                        foreach (XmlElement xmlDocOriginarioNfe in xmlListaDocumentosOriginariosNfe)
                        {
                            // var nf = Glass.Data.DAL.NotaFiscalDAO.Instance.GetByChaveAcesso(xmlDocOriginarioNfe.InnerText);

                            var docsOriginarios = new NotaFiscalCte
                            {
                                TipoDoc       = "NFe",
                                DocEmitenteNf = xmlDocOriginarioNfe.InnerText
                                                //DocEmitenteNf = nf.CnpjEmitente,
                                                //Serie = nf.Serie,
                                                //NumeroDoc = nf.NumeroNFe.ToString()
                            };

                            listaDocsOriginarios.Add(docsOriginarios);
                        }
                        cte.ListaDocumentosOriginarios = listaDocsOriginarios;
                    }
                }
            }
            //else
            //{
            //    XmlNodeList xmlListaDocumentosOriginarios = xmlInfCTe["rem"].GetElementsByTagName("infNFe");
            //    if (xmlListaDocumentosOriginarios.Count > 0)
            //    {
            //        var cpfCnpjDocsOriginarios = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "rem", "CPF")) ?
            //            Formatacoes.MascaraCpf(GetNodeValue(xmlInfCTe, "rem", "CPF")) : Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "rem", "CNPJ"));

            //        var listaDocsOriginarios = new List<NotaFiscalCte>();

            //        foreach (XmlElement xmlDocOriginario in xmlListaDocumentosOriginarios)
            //        {
            //            var docsOriginarios = new NotaFiscalCte
            //            {
            //                TipoDoc = xmlDocOriginario.GetElementsByTagName("mod")[0].InnerText,
            //                DocEmitenteNf = cpfCnpjDocsOriginarios,
            //                SerieNumDoc = xmlDocOriginario.GetElementsByTagName("serie")[0].InnerText
            //            };
            //            listaDocsOriginarios.Add(docsOriginarios);
            //        }
            //        cte.ListaDocumentosOriginarios = listaDocsOriginarios;
            //    }
            //}


            //Informações específicas do modal rodoviário lotação

            /*cte.TipoVeiculo = GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo/veic", "tpVeic") == "0" ? "Tração" : "Reboque";
             * cte.Placa = GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo/veic", "placa");
             * cte.UFVeiculo = GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo/veic", "UF");*/

            var veiculosCte = DAL.CTe.VeiculoCteDAO.Instance.GetVeiculosCteByIdCte(_cte.IdCte);

            /* Chamado 44905. */
            if (veiculosCte != null)
            {
                var veiculosTipo         = new List <string>();
                var veiculosPlaca        = new List <string>();
                var veiculosUf           = new List <string>();
                var proprietariosRntrc   = new List <string>();
                var participantes        = DAL.CTe.ParticipanteCteDAO.Instance.GetParticipanteByIdCte(_cte.IdCte);
                var participanteEmitente = participantes.Where(f => f.TipoParticipante == ParticipanteCte.TipoParticipanteEnum.Emitente).First();
                var loja = DAL.LojaDAO.Instance.GetElement(participanteEmitente.IdLoja.Value);

                foreach (var veiculoCte in veiculosCte)
                {
                    var listaProprietarios = DAL.CTe.ProprietarioVeiculo_VeiculoDAO.Instance.GetList(veiculoCte.Placa, 0);
                    var proprietario       = new ProprietarioVeiculo();

                    foreach (var prop in listaProprietarios)
                    {
                        if (Formatacoes.LimpaCpfCnpj(DAL.CTe.ProprietarioVeiculoDAO.Instance.GetElement(prop.IdPropVeic).Cnpj) == Formatacoes.LimpaCpfCnpj(loja.Cnpj))
                        {
                            var rntrc = DAL.CTe.ProprietarioVeiculoDAO.Instance.ObtemValorCampo <string>("RNTRC", "IdPropVeic=" + prop.IdPropVeic);

                            if (!string.IsNullOrEmpty(rntrc))
                            {
                                proprietariosRntrc.Add(rntrc);
                            }

                            break;
                        }
                    }

                    var veiculo = DAL.VeiculoDAO.Instance.GetElement(veiculoCte.Placa);

                    veiculosTipo.Add(veiculo.TipoVeiculo == 0 ? "Tração" : "Reboque");
                    veiculosPlaca.Add(veiculoCte.Placa);
                    veiculosUf.Add(veiculo.UfLicenc);
                }

                cte.TipoVeiculo       = string.Join("\n", veiculosTipo);
                cte.Placa             = string.Join("\n", veiculosPlaca);
                cte.UFVeiculo         = string.Join("\n", veiculosUf);
                cte.RNTRCProprietario = string.Join("\n", proprietariosRntrc);
            }
            else
            {
                cte.TipoVeiculo       = GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo/veic", "tpVeic") == "0" ? "Tração" : "Reboque";
                cte.Placa             = GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo/veic", "placa");
                cte.UFVeiculo         = GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo/veic", "UF");
                cte.RNTRCProprietario = GetNodeValue(xmlInfCTe, "prop", "RNTRC");
            }

            cte.RespValePedCnpj = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "valePed", "CNPJPg")) ?
                                  Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "valePed", "CNPJPg")) : "";
            cte.FornValePedagioCnpj = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "valePed", "CNPJForn")) ?
                                      Formatacoes.MascaraCnpj(GetNodeValue(xmlInfCTe, "valePed", "CNPJForn")) : "";
            cte.NumeroComprovante = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "valePed", "nCompra")) ? GetNodeValue(xmlInfCTe, "valePed", "nCompra") : "";

            cte.RNTRCRodo = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo", "RNTRC")) ? GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo", "RNTRC") : "";
            cte.Lotacao   = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo", "lota")) ? GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo", "lota") : "";
            cte.CIOT      = !string.IsNullOrEmpty(GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo", "CIOT")) ? GetNodeValue(xmlInfCTe, "infCTeNorm/infModal/rodo", "CIOT") : "";

            XmlNodeList xmlListaLacre = xmlInfCTe["infCTeNorm"].GetElementsByTagName("lacRodo");
            if (xmlListaLacre.Count > 0)
            {
                var listaNumLacre = new List <LacreCteRod>();

                foreach (XmlElement xmlLacre in xmlListaLacre)
                {
                    var lacre = new LacreCteRod
                    {
                        NumeroLacre = xmlLacre.GetElementsByTagName("nLacre")[0].InnerText
                    };
                    listaNumLacre.Add(lacre);
                }
                cte.ListaNumeroLacre = listaNumLacre;
            }

            #endregion

            return(cte);
        }