public HttpResponseMessage ConsultarNfse(ComandoTransmitir comando)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var provedor = comando.TDFe.TProvedor;

                    var nota = new FrgNFSe(provedor)
                    {
                        Documento = comando
                    };

                    XmlDocument xml = null;
                    xml = nota.GerarXmlConsulta(comando.FNumeroNF, comando.FDataEmissao);
                    XmlDocument xmlAux = Util.EncodingXML(xml);

                    //chamarservico
                    AplicacaoServiceNFSe aplicacao = new AplicacaoServiceNFSe(xmlAux, "ConsultarNfse", comando, provedor);
                    aplicacao.CarregarDados();
                    var ret = aplicacao.ExecutaMetodo();
                    //retornar resposta
                    var resultadoOperacao = nota.LerRetorno(ret, EnumOperacao.Consulta);

                    return(Request.CreateResponse <RetornoTransmitir>(HttpStatusCode.OK, resultadoOperacao));
                }

                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
            catch (System.Exception erro)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, erro.Message));
            }
        }
        public HttpResponseMessage CancelarNfse(ComandoTransmitir comando)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var provedor = comando.TDFe.TProvedor;

                    var nota = new FrgNFSe(provedor)
                    {
                        Documento = comando
                    };

                    XmlDocument xml = null;

                    switch (provedor)
                    {
                    case EnumProvedor.DSF:
                    case EnumProvedor.CECAM:
                        xml = nota.GerarXmlCancelaNota(comando.FNumeroNF, comando.FCodigoCancelamento.ToString(), nota.Documento.TDFe.Tide.FNumeroLote, comando.FCodigoVerificacao);
                        break;

                    case EnumProvedor.Paulistana:
                    case EnumProvedor.Metropolis:
                    case EnumProvedor.Thema:
                    case EnumProvedor.BHISS:
                    case EnumProvedor.IssOnline:
                    case EnumProvedor.Natalense:
                    case EnumProvedor.CARIOCA:
                    case EnumProvedor.PRONIM:
                        xml = nota.GerarXmlCancelaNota(comando.FNumeroNF);
                        break;

                    case EnumProvedor.Goiania:
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "err007003"));

                    default:
                        xml = nota.GerarXmlCancelaNota(comando.FNumeroNF, comando.FCodigoCancelamento.ToString());
                        break;
                    }

                    XmlDocument xmlAux = Util.EncodingXML(xml);

                    AplicacaoServiceNFSe aplicacao = new AplicacaoServiceNFSe(xmlAux, "CancelarNfse", comando, provedor);
                    aplicacao.CarregarDados();
                    var retCanc = aplicacao.ExecutaMetodo();

                    var resultadoOperacao = nota.LerRetorno(retCanc, EnumOperacao.Cancela);

                    return(Request.CreateResponse <RetornoTransmitir>(HttpStatusCode.OK, resultadoOperacao));
                }

                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
            catch (System.Exception erro)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, erro.Message));
            }
        }