internal MensagemRetornoInutilizacao InutilizarNotaFiscal(string ufEmitente, CodigoUfIbge codigoUf, Ambiente ambiente, string cnpjEmitente, Modelo modeloNota, string serie, string numeroInicial, string numeroFinal) { var inutNFe = new Envio.TInutNFe(); inutNFe.versao = "4.00"; var infInut = new Envio.TInutNFeInfInut(); infInut.tpAmb = (Envio.TAmb)(int) ambiente; infInut.xServ = Envio.TInutNFeInfInutXServ.INUTILIZAR; infInut.cUF = (Envio.TCodUfIBGE)(int) UfToTCOrgaoIBGEConversor.GetTCOrgaoIBGE(ufEmitente); infInut.ano = DateTime.Now.ToString("yy"); infInut.CNPJ = cnpjEmitente; infInut.mod = (Envio.TMod)(int) modeloNota; infInut.serie = serie; infInut.nNFIni = numeroInicial; infInut.nNFFin = numeroFinal; infInut.xJust = "Não usada, quebra de sequência."; var cUF = infInut.cUF.ToString().Replace("Item", string.Empty); var modelo = modeloNota.ToString().Replace("Modelo", string.Empty); infInut.Id = "ID" + cUF + infInut.ano + cnpjEmitente + modelo + int.Parse(serie).ToString("D3") + int.Parse(numeroInicial).ToString("D9") + int.Parse(numeroFinal).ToString("D9"); inutNFe.infInut = infInut; var xml = XmlUtil.Serialize(inutNFe, "http://www.portalfiscal.inf.br/nfe"); var certificado = _certificadoService.GetX509Certificate2(); var node = AssinaturaDigital.AssinarInutilizacao(xml, "#" + infInut.Id, certificado); var servico = _serviceFactory.GetService(modeloNota, ambiente, Servico.INUTILIZACAO, codigoUf, certificado); var client = (NFeInutilizacao4SoapClient)servico.SoapClient; var result = client.nfeInutilizacaoNF(node); var retorno = (Retorno.TRetInutNFe)XmlUtil.Deserialize <Retorno.TRetInutNFe>(result.OuterXml); if (retorno.infInut.cStat.Equals("102")) { var procInut = new Retorno.ProcInut.TProcInutNFe(); var procSerialized = "<?xml version=\"1.0\" encoding=\"utf-8\"?><ProcInutNFe versao=\"4.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" + node.OuterXml.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", string.Empty) + result.OuterXml.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", string.Empty) + "</ProcInutNFe>"; return(new MensagemRetornoInutilizacao() { IdInutilizacao = infInut.Id, Status = Status.SUCESSO, Mensagem = retorno.infInut.xMotivo, DataInutilizacao = retorno.infInut.dhRecbto, MotivoInutilizacao = infInut.xJust, ProtocoloInutilizacao = retorno.infInut.nProt, Xml = procSerialized }); } else { return(new MensagemRetornoInutilizacao() { Status = Status.ERRO, Mensagem = retorno.infInut.xMotivo }); } }