private bool StatusWebService(string aXml, List <string> aListaRetorno)
 {
     if (VerificaCodigo(aXml, "107"))
     {
         aListaRetorno = null;
         return(true);
     }
     else
     {
         aListaRetorno = NotaFiscalEletronica30.TrataRetorno(aXml, "cStat", TipoRetorno.Motivo);
         return(false);
     }
 }
        private bool VerificaCodigo(string aXml, string aCodigo)
        {
            int tem = 0;

            tem = (from r in NotaFiscalEletronica30.TrataRetorno(aXml, "cStat", TipoRetorno.Codigo)
                   where r == aCodigo
                   select r).Count();

            if (tem > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public static INotaFiscalEletronica NotaFiscalEletronicaFactory(VersaoXML _versaoXml, TipoEmissao _tipoServidor, cwkAmbiente _ambiente, TipoDoCertificado _tipoCertificado
                                                                        , string diretorioPadrao, Int16 indFinal, IndPres indPres, bool bDevolucao, int modeloDocumento, int componenteDfe, ConfiguracaoManager configManager = null)
        {
            INotaFiscalEletronica retorno;

            if (modeloDocumento == 55)
            {
                switch (_versaoXml)
                {
                case VersaoXML.v3:
                    retorno = new NotaFiscalEletronica30(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao);
                    break;

                case VersaoXML.v4:
                    retorno = new NotaFiscalEletronica40(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao);
                    break;

                case VersaoXML.v5a:
                    retorno = new NotaFiscalEletronica50a(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao, indFinal, indPres, bDevolucao);
                    break;

                case VersaoXML.v6:
                    if (componenteDfe == 0)     //0 = Tecnospeed / 1 = Zeus Automação
                    {
                        retorno = new NotaFiscalEletronica60(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao, indFinal, indPres, bDevolucao);
                    }
                    else
                    {
                        retorno = new NotaFiscalEletronicaZeus60(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao, indFinal, indPres, bDevolucao);
                    }

                    break;

                default:
                    throw new Exception("Versão do XML " + _versaoXml + " não implementado para a NF-e");
                    //return null;
                }
            }
            else
            {
                switch (_versaoXml)
                {
                case VersaoXML.v5a:
                    retorno = new NotaFiscalEletronicaConsumidor50a(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao, indFinal, indPres, bDevolucao, configManager);
                    break;

                case VersaoXML.v6:
                    if (componenteDfe == 0)     //0 = Tecnospeed / 1 = Zeus Automação
                    {
                        retorno = new NotaFiscalEletronicaConsumidor60(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao, indFinal, indPres, bDevolucao, configManager);
                    }
                    else
                    {
                        retorno = new NotaFiscalEletronicaConsumidorZeus60(_tipoServidor, _ambiente, _tipoCertificado, diretorioPadrao, indFinal, indPres, bDevolucao);
                    }
                    break;

                default:
                    throw new Exception("Versão do XML " + _versaoXml + "não implementado para a NFC-e");
                }
            }

            retorno.FormaEmissao      = _tipoServidor;
            retorno.TipoDoCertificado = _tipoCertificado;
            return(retorno);
        }