Пример #1
0
        private static string getURLs(string local, ref PadroesNFSe padrao, int idMunicipio)
        {
            /*
             * tenta ler as URL's do 'WebService.xml'
             * não encontrando, assume o ID='padrao' e UF='XX' e padrao='padrao'
             */

            if (System.IO.File.Exists(Propriedade.NomeArqXMLWebService_NFSe))
            {
                XElement axml = null;

                try
                {
                    axml = XElement.Load(Propriedade.NomeArqXMLWebService_NFSe);
                }
                catch (Exception ex)
                {
                    Functions.WriteLog("Ocorreu um erro na tentativa de carregamento do arquivo " + Propriedade.NomeArqXMLWebService_NFSe + ".\r\n" +
                                       "Acesse novamente o sistema para que se recupere automaticamente do erro.\r\n\r\n" +
                                       "Erro:\r\n\r\n" + ex.Message, true, true, "");

                    if (System.IO.File.Exists(Propriedade.XMLVersaoWSDLXSD))
                    {
                        System.IO.File.Delete(Propriedade.XMLVersaoWSDLXSD);
                    }

                    Environment.Exit(0);
                }

                ///
                /// primeiro, pesquisa pelo ID
                ///
                var s = (from p in axml.Descendants(NFeStrConstants.Estado)
                         where  //(string)p.Attribute(NFe.Components.NFeStrConstants.Padrao) == padrao.ToString() &&
                         (string)p.Attribute(TpcnResources.ID.ToString()) == idMunicipio.ToString()
                         select p);
                foreach (var item in s)
                {
                    if (item.Element(local) != null)
                    {
                        ///
                        /// pega o padrao definido no WebService.xml descartando o que constar no UninMunic.xml
                        ///
                        padrao = WebServiceNFSe.GetPadraoFromString(item.Attribute(NFeStrConstants.Padrao).Value);

                        return(local.Equals(NFeStrConstants.LocalHomologacao) ?
                               item.FirstNode.ToString() : item.LastNode.ToString());
                    }
                }
                ///
                /// não encontrei, assume o ID='padrao' e UF='XX' e padrao='padrao'
                ///
                PadroesNFSe pdr = padrao;

                var xs = (from p in axml.Descendants(NFeStrConstants.Estado)
                          where (string)p.Attribute(NFeStrConstants.Padrao) == pdr.ToString() &&
                          (string)p.Attribute(TpcnResources.UF.ToString()) == "XX" &&
                          (string)p.Attribute(TpcnResources.ID.ToString()) == pdr.ToString()
                          select p);
                foreach (var item in xs)
                {
                    if (item.Element(local) != null)
                    {
                        return(local.Equals(NFeStrConstants.LocalHomologacao) ?
                               item.FirstNode.ToString() : item.LastNode.ToString());
                    }
                }
            }
            else
            {
                Functions.WriteLog("Ocorreu um erro na tentativa de carregamento do arquivo " + Propriedade.NomeArqXMLWebService_NFSe + ".\r\n" +
                                   "Acesse novamente o sistema para que se recupere automaticamente do erro.", true, true, "");

                if (System.IO.File.Exists(Propriedade.XMLVersaoWSDLXSD))
                {
                    System.IO.File.Delete(Propriedade.XMLVersaoWSDLXSD);
                }

                Environment.Exit(0);
            }

            return("");
        }
Пример #2
0
        public static void SalvarXMLMunicipios(string uf, string cidade, int codigomunicipio, string padrao, bool forcaAtualizacao)
        {
            try
            {
                if (uf != null)
                {
                    Municipio mun = Propriedade.Municipios.FirstOrDefault(w => w.CodigoMunicipio == codigomunicipio);

                    var geral = PadroesNFSeUnicoWSDLDataSource.FirstOrDefault(w => w.fromType == GetPadraoFromString(padrao).ToString());

                    if (geral != null && mun != null)/*(padrao == PadroesNFSe.NaoIdentificado.ToString() ||
                                                      * padrao == PadroesNFSe.BETHA.ToString() ||
                                                      * padrao == PadroesNFSe.GINFES.ToString() ||
                                                      * padrao == PadroesNFSe.EQUIPLANO.ToString() ||
                                                      * padrao == PadroesNFSe.ABASE.ToString()) && mun != null)*/
                    {
                        ///
                        /// sai da lista "Municipios" pq esses padroes tem enderecos unicos
                        ///
                        Propriedade.Municipios.Remove(mun);
                    }
                    else
                    {
                        if (padrao != PadroesNFSe.NaoIdentificado.ToString())
                        {
                            if (mun != null)
                            {
                                ///
                                /// é o mesmo padrão definido?
                                /// o parametro "forcaAtualizacao" é "true" somente quando vier da aba "Municipios definidos"
                                /// desde que o datagrid atualiza automaticamente o membro "padrao" da classe "Municipio" quando ele é alterado.
                                if (mun.PadraoStr == padrao && !forcaAtualizacao)
                                {
                                    return;
                                }

                                mun.Padrao    = GetPadraoFromString(padrao);
                                mun.PadraoStr = padrao;
                            }
                            else
                            {
                                Propriedade.Municipios.Add(new Municipio(codigomunicipio, uf, cidade.Trim(), GetPadraoFromString(padrao)));
                            }
                        }
                    }
                }
                if (System.IO.File.Exists(Propriedade.NomeArqXMLMunicipios))
                {
                    ///
                    /// faz uma copia por segurança
                    if (System.IO.File.Exists(Propriedade.NomeArqXMLMunicipios + ".bck"))
                    {
                        System.IO.File.Delete(Propriedade.NomeArqXMLMunicipios + ".bck");
                    }
                    System.IO.File.Copy(Propriedade.NomeArqXMLMunicipios, Propriedade.NomeArqXMLMunicipios + ".bck");
                }

                /*
                 * <nfes_municipios>
                 *  <Registro ID="4125506" Nome="São José dos Pinais - PR" Padrao="GINFES" />
                 * </nfes_municipios>
                 */

                var      xml       = new XDocument(new XDeclaration("1.0", "utf-8", null));
                XElement elementos = new XElement("nfes_municipios");
                var      r         = (from ss in Propriedade.Municipios orderby ss.Nome select ss);
                foreach (Municipio item in r)
                {
                    elementos.Add(new XElement(NFeStrConstants.Registro,
                                               new XAttribute(TpcnResources.ID.ToString(), item.CodigoMunicipio.ToString()),
                                               new XAttribute(NFeStrConstants.Nome, item.Nome.Trim()),
                                               new XAttribute(NFeStrConstants.Padrao, item.PadraoStr)));
                }
                xml.Add(elementos);
                xml.Save(Propriedade.NomeArqXMLMunicipios);
            }
            catch (Exception ex)
            {
                //recupera a copia feita se houve erro na criacao do XML de municipios
                if (System.IO.File.Exists(Propriedade.NomeArqXMLMunicipios + ".bck"))
                {
                    Functions.Move(Propriedade.NomeArqXMLMunicipios + ".bck", Propriedade.NomeArqXMLMunicipios);
                }
                throw ex;
            }
        }