public void InutilizarCancelarNotasPendentesContingencia(NotaFiscalEntity notaParaCancelar, INotaFiscalRepository notaFiscalRepository) { if (notaParaCancelar == null || notaParaCancelar.Status == 0) return; var emitente = _emissorService.GetEmissor(); var ufEmissor = emitente.Endereco.UF; var codigoUf = UfToCodigoUfConversor.GetCodigoUf(ufEmissor); var certificado = _certificadoService.GetX509Certificate2(); var ambiente = (Ambiente)notaParaCancelar.Ambiente - 1; var modelo = notaParaCancelar.Modelo.Equals("55") ? Modelo.Modelo55 : Modelo.Modelo65; var result = _nfeConsulta.ConsultarNotaFiscal(notaParaCancelar.Chave, codigoUf, certificado, ambiente, modelo); var codigoUfEnum = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), emitente.Endereco.UF); if (result.IsEnviada) { _cancelaNotaFiscalService.CancelarNotaFiscal(ufEmissor, codigoUfEnum, ambiente, emitente.CNPJ, notaParaCancelar.Chave, result.Protocolo.infProt.nProt, modelo, "Nota duplicada em contingência"); } else { var resultadoInutilizacao = _notaInutilizadaService.InutilizarNotaFiscal(ufEmissor, codigoUfEnum, ambiente, emitente.CNPJ, modelo, notaParaCancelar.Serie, notaParaCancelar.Numero, notaParaCancelar.Numero); if (resultadoInutilizacao.Status != Sefaz.NfeInutilizacao2.Status.ERRO) _notaFiscalRepository.ExcluirNota(notaParaCancelar.Chave, ambiente); } }
private async Task AtualizarNotasPendentes() { if (_isNotasPendentesVerificadas || NotasFiscais.Count == 0) { return; } _isNotasPendentesVerificadas = true; var notasFiscaisPendentes = _notaFiscalRepository.GetNotasPendentes(false); if (notasFiscaisPendentes.Count == 0) { return; } var codigoUf = UfToCodigoUfConversor.GetCodigoUf(_emissorService.GetEmissor().Endereco.UF); var certificado = _certificadoService.GetX509Certificate2(); var config = _configuracaoService.GetConfiguracao(); if (certificado == null) { throw new ArgumentNullException(nameof(certificado)); } var idsNotasPendentes = notasFiscaisPendentes.Select(n => n.Id); foreach (var idNotaPendente in idsNotasPendentes) { var nota = await ConsultarNotasAsync(idNotaPendente, codigoUf, certificado, config); if (nota == null) { continue; } var notaPendente = NotasFiscais.FirstOrDefault(n => n.Status == "Pendente" && n.Chave == nota.Chave); var index = NotasFiscais.IndexOf(notaPendente); var notaMemento = new NotaFiscalMemento(nota.Numero, nota.Modelo == "NFC-e" ? Modelo.Modelo65 : Modelo.Modelo55, nota.DataEmissao, nota.DataAutorizacao, nota.Destinatario, nota.UfDestinatario, nota.ValorTotal.ToString("N2", new CultureInfo("pt-BR")), (Status)nota.Status, nota.Chave); NotasFiscais[index] = notaMemento; } }