private Task PopularListaNotasFiscais(int page = 1) { return(Task.Run(() => { var notasDb = _notaFiscalRepository.Take(100, page); if (notasDb == null) { return; } notasDb = notasDb.OrderByDescending(n => n.DataEmissao).AsEnumerable(); var notaFiscalMementos = new List <NotaFiscalMemento>(); foreach (var nota in notasDb) { var notaMemento = new NotaFiscalMemento(nota.Numero, nota.Modelo == "65" ? 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); notaFiscalMementos.Add(notaMemento); } Application.Current.Dispatcher.BeginInvoke(new Action(() => { NotasFiscais = new ObservableCollection <NotaFiscalMemento>(notaFiscalMementos); })); })); }
private void NotaFiscalVM_NotaCanceladaEventHandler(NotaFiscalEntity nota) { var notaCancelada = NotasFiscais.FirstOrDefault(n => n.Chave == nota.Chave); var index = NotasFiscais.IndexOf(notaCancelada); 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; }
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; } }
private void EnviarEmailCmd_Execute(NotaFiscalMemento notaFiscal) { _enviarEmailViewModel.EnviarEmail(notaFiscal.Chave); }
private void VisualizarNotaCmd_Execute(NotaFiscalMemento notaFiscalMemento) { var notaFiscal = (NFCeModel)_notaFiscalRepository.GetNotaFiscalByChave(notaFiscalMemento.Chave); _visualizarNotaEnviadaViewModel.VisualizarNotaFiscal(notaFiscal); }
private async void EnviarNotaNovamenteCmd_ExecuteAsync(NotaFiscalMemento notaPendenteMemento) { IsBusy = true; BusyContent = "Enviando..."; var config = _configuracaoService.GetConfiguracao(); var modelo = notaPendenteMemento.Tipo == "NFC-e" ? Modelo.Modelo65 : Modelo.Modelo55; //Preencher objeto da NotaFiscal a partir do XML e enviar para a correspondente ViewModel NFe ou NFCe var app = Application.Current; var mainWindow = app.MainWindow; if (!_consultaStatusServicoService.ExecutarConsultaStatus(config, modelo)) { MessageBox.Show(mainWindow, "Serviço continua indisponível. Aguarde o reestabelecimento da conexão e tente novamente.", "Erro de conexão ou serviço indisponível", MessageBoxButton.OK, MessageBoxImage.Information); return; } var ambiente = config.IsProducao ? Ambiente.Producao : Ambiente.Homologacao; var notaFiscalDb = _notaFiscalRepository.GetNotaFiscalByChave(notaPendenteMemento.Chave); var xml = await notaFiscalDb.LoadXmlAsync(); var notaFiscalBo = _notaFiscalRepository.GetNotaFiscalFromNfeProcXml(xml); notaFiscalBo.Identificacao.DataHoraEmissao = DateTime.Now; foreach (var prod in notaFiscalBo.Produtos) { var produtoDb = _produtoService.GetByCodigo(prod.Codigo); prod.Id = produtoDb.Id; } try { var cscId = ambiente == Ambiente.Homologacao ? config.CscIdHom : config.CscId; var csc = ambiente == Ambiente.Homologacao ? config.CscHom : config.Csc; _notaFiscalRepository.ExcluirNota(notaPendenteMemento.Chave, ambiente); _enviaNotaFiscalService.EnviarNotaFiscal(notaFiscalBo, cscId, csc); IsBusy = false; var mbResult = MessageBox.Show(mainWindow, "Nota enviada com sucesso! Deseja imprimi-la?", "Emissão NFe", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No); if (mbResult == MessageBoxResult.Yes) { BusyContent = "Gerando impressão..."; IsBusy = true; await GeradorPDF.GerarPdfNotaFiscal(notaFiscalBo); } IsBusy = false; var notaIndex = NotasFiscais.IndexOf(notaPendenteMemento); Destinatario destinatario; var destinatarioUf = notaFiscalBo.Emitente.Endereco.UF; if (notaFiscalBo.Destinatario != null) { destinatario = notaFiscalBo.Destinatario; destinatarioUf = destinatario.Endereco != null ? destinatario.Endereco.UF : destinatarioUf; } else { destinatario = new Destinatario("CONSUMIDOR NÃO IDENTIFICADO"); } var valorTotalProdutos = notaFiscalBo.ValorTotalProdutos.ToString("N2", new CultureInfo("pt-BR")); var notaMemento = new NotaFiscalMemento(notaFiscalBo.Identificacao.Numero, notaFiscalBo.Identificacao.Modelo, notaFiscalBo.Identificacao.DataHoraEmissao, notaFiscalBo.DataHoraAutorização, destinatario.NomeRazao, destinatarioUf, valorTotalProdutos, notaFiscalBo.Identificacao.Status, notaFiscalBo.Identificacao.Chave); NotasFiscais[notaIndex] = notaMemento; NotaPendenteReenviadaEvent(notaFiscalBo); } catch (Exception e) { log.Error(e); MessageBox.Show(mainWindow, "Ocorreram os seguintes erros ao tentar enviar a nota fiscal:\n\n" + e.InnerException.Message, "Erro", MessageBoxButton.OK, MessageBoxImage.Information); } }