internal void CancelarNotaFiscal(NFCeModel notaFiscal) { if (notaFiscal.Status.Equals("Enviada")) { EnviarCancelamentoNotaFiscal(notaFiscal); } else { InutilizarNotaFiscal(notaFiscal); } }
private void LoadedCmd_Execute(string modelo) { NotaFiscal = new NFCeModel(); if (modelo != null && modelo.Equals("55")) { _modelo = Modelo.Modelo55; NotaFiscal.IsImpressaoBobina = false; } else { _modelo = Modelo.Modelo65; } NotaFiscal.DestinatarioSelecionado = new DestinatarioModel(); Pagamento = new PagamentoVO(); Pagamento.FormaPagamento = "Dinheiro"; var config = _configuracaoService.GetConfiguracao(); NotaFiscal.Serie = config.IsProducao ? config.SerieNFCe : config.SerieNFCeHom; NotaFiscal.Numero = config.IsProducao ? config.ProximoNumNFCe : config.ProximoNumNFCeHom; NotaFiscal.ModeloNota = "NFC-e"; NotaFiscal.DataEmissao = DateTime.Now; NotaFiscal.HoraEmissao = DateTime.Now; NotaFiscal.DataSaida = DateTime.Now; NotaFiscal.HoraSaida = DateTime.Now; NotaFiscal.IndicadorPresenca = PresencaComprador.Presencial; NotaFiscal.Finalidade = "Normal"; var produtos = _produtoService.GetProdutosByNaturezaOperacao("Venda"); foreach (var produto in produtos) { ProdutosCombo.Add(produto); } var destinatarios = _destinatarioService.GetAll(); foreach (var destDB in destinatarios) { Destinatarios.Add((DestinatarioModel)destDB); } }
private void EnviarCancelamentoNotaFiscal(NFCeModel notaFiscalModel) { X509Certificate2 certificado; var modeloNota = notaFiscalModel.Modelo.Contains("NFC-e") ? Modelo.Modelo65 : Modelo.Modelo55; var config = _configuracaoService.GetConfiguracao(); var emitente = _emissorService.GetEmissor(); var codigoUF = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), emitente.Endereco.UF); var ambiente = config.IsProducao ? Ambiente.Producao : Ambiente.Homologacao; var certificadoEntity = _certificadoService.GetCertificado(); if (!string.IsNullOrWhiteSpace(certificadoEntity.Caminho)) { certificado = _certificateManager.GetCertificateByPath(certificadoEntity.Caminho, RijndaelManagedEncryption.DecryptRijndael(certificadoEntity.Senha)); } else { certificado = _certificateManager.GetCertificateBySerialNumber(certificadoEntity.NumeroSerial, false); } UF = emitente.Endereco.UF; CodigoUF = codigoUF; Cnpj = emitente.CNPJ; Chave = notaFiscalModel.Chave; Protocolo = notaFiscalModel.Protocolo; ModeloNota = modeloNota; Certificado = certificado; Ambiente = ambiente; var app = Application.Current; var mainWindow = app.MainWindow; new CancelarNotaWindow() { Owner = mainWindow }.ShowDialog(); }
internal async void VisualizarNotaFiscal(NFCeModel notaFiscal) { NotaFiscal = notaFiscal; //falta preencher pagamentos NotaFiscal.Pagamentos = new ObservableCollection <PagamentoVO>(); NotaFiscal.DestinatarioSelecionado = new DestinatarioModel(); string xml = await GetNotaXmlAsync(); var notaFiscalBO = _notaFiscalRepository.GetNotaFiscalFromNfeProcXml(xml); _notaFiscalBO = notaFiscalBO; //Preenche pagamentos if (notaFiscalBO.Pagamentos != null) { foreach (var pagamento in notaFiscalBO.Pagamentos) { var pagamentoVO = new PagamentoVO(); pagamentoVO.FormaPagamento = pagamento.FormaPagamentoTexto; pagamentoVO.ValorTotal = pagamento.Valor.ToString("N2", new CultureInfo("pt-BR")); NotaFiscal.Pagamentos.Add(pagamentoVO); } } else { NotaFiscal.Pagamentos.Add(new PagamentoVO() { FormaPagamento = "N/A" }); } //Preenche documento destinatário if (notaFiscalBO.Destinatario != null) { DocumentoDestinatario = notaFiscalBO.Destinatario.Documento; IsDestinatarioEstrangeiro = notaFiscalBO.Destinatario.TipoDestinatario == TipoDestinatario.Estrangeiro; } NotaFiscal.Finalidade = notaFiscalBO.Identificacao.FinalidadeConsumidor == FinalidadeConsumidor.ConsumidorFinal ? "Consumidor Final" : "Normal"; NotaFiscal.NaturezaOperacao = notaFiscalBO.Identificacao.NaturezaOperacao; NotaFiscal.Serie = notaFiscalBO.Identificacao.Serie.ToString("D3"); //Preenche produtos NotaFiscal.Produtos = new ObservableCollection <ProdutoVO>(); foreach (var produto in notaFiscalBO.Produtos) { var produtoVO = new ProdutoVO(); produtoVO.QtdeProduto = produto.QtdeUnidadeComercial; produtoVO.Descricao = produto.Descricao; produtoVO.ValorUnitario = produto.ValorUnidadeComercial; produtoVO.Descontos = produto.ValorDesconto; produtoVO.TotalLiquido = produto.ValorTotal; NotaFiscal.Produtos.Add(produtoVO); } var app = Application.Current; var mainWindow = app.MainWindow; var window = new VisualizarNotaEnviadaWindow() { Owner = mainWindow }; window.ShowDialog(); }
private void InutilizarNotaFiscal(NFCeModel notaFiscal) { var config = _configuracaoService.GetConfiguracao(); var emitente = _emissorService.GetEmissor(); var codigoUF = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), emitente.Endereco.UF); var ambiente = config.IsProducao ? Ambiente.Producao : Ambiente.Homologacao; var modeloNota = notaFiscal.Modelo.Contains("NFC-e") ? Modelo.Modelo65 : Modelo.Modelo55; if (modeloNota == Modelo.Modelo55) //NF-e { string proximoNumNFe = ambiente == Ambiente.Homologacao ? config.ProximoNumNFeHom : config.ProximoNumNFe; var numAtual = (int.Parse(proximoNumNFe) - 1).ToString(); //Se o número atual não tiver mudado, significa que ela não foi enviada e pode ser excluída sem inutilizar. if (notaFiscal.Numero == numAtual) { if (ambiente == Ambiente.Homologacao) { config.ProximoNumNFeHom = numAtual; } else { config.ProximoNumNFe = numAtual; } var modelo = notaFiscal.Modelo == "NFC-e" ? "65" : "55"; _notaFiscalRepository.ExcluirNota(notaFiscal.Chave, ambiente); NotaInutilizadaEvent(notaFiscal); _configuracaoService.Salvar(config); } else //caso o número atual seja diferente, é necessário inutilizar { var mensagemRetorno = _notaInutilizadaService.InutilizarNotaFiscal(emitente.Endereco.UF, codigoUF, ambiente, emitente.CNPJ, modeloNota, notaFiscal.Serie, notaFiscal.Numero, notaFiscal.Numero); if (mensagemRetorno.Status != Core.NotasFiscais.Sefaz.NfeInutilizacao2.Status.ERRO) { _notaFiscalRepository.ExcluirNota(notaFiscal.Chave, ambiente); NotaInutilizadaEvent(notaFiscal); _configuracaoService.Salvar(config); } else { MessageBox.Show("Houve um erro ao tentar cancelar a nota. Tente novamente e, se o erro persistir, contate o suporte." + "\n\n" + mensagemRetorno.Mensagem, "Erro!", MessageBoxButton.OK, MessageBoxImage.Information); } } } else //NFC-e { string proximoNumNFCe = ambiente == Ambiente.Homologacao ? config.ProximoNumNFeHom : config.ProximoNumNFe; var numAtual = (int.Parse(proximoNumNFCe) - 1).ToString(); if (notaFiscal.Numero == numAtual) { if (ambiente == Ambiente.Homologacao) { config.ProximoNumNFCeHom = numAtual; } else { config.ProximoNumNFCe = numAtual; } var modelo = notaFiscal.Modelo == "NFC-e" ? "65" : "55"; _notaFiscalRepository.ExcluirNota(notaFiscal.Chave, ambiente); NotaInutilizadaEvent(notaFiscal); _configuracaoService.Salvar(config); } else { var mensagemRetorno = _notaInutilizadaService.InutilizarNotaFiscal(emitente.Endereco.UF, codigoUF, ambiente, emitente.CNPJ, modeloNota, notaFiscal.Serie, notaFiscal.Numero, notaFiscal.Numero); if (mensagemRetorno.Status != Core.NotasFiscais.Sefaz.NfeInutilizacao2.Status.ERRO) { _notaFiscalRepository.ExcluirNota(notaFiscal.Chave, ambiente); NotaInutilizadaEvent(notaFiscal); _configuracaoService.Salvar(config); } else { MessageBox.Show("Houve um erro ao tentar cancelar a nota. Tente novamente e, se o erro persistir, contate o suporte." + "\n\n" + mensagemRetorno.Mensagem, "Erro!", MessageBoxButton.OK, MessageBoxImage.Information); } } } }
private void NotaCanceladaVM_NotaInutilizadaEventHandler(NFCeModel notaInutilizada) { var notaMemento = NotasFiscais.First(n => n.Chave == notaInutilizada.Chave); NotasFiscais.Remove(notaMemento); }