private void SalvarCmd_Execute(Window wdw) { ValidateModel(); if (!HasErrors) { ConfiguracaoEntity configuracao = null; if (_configuracaoService.GetConfiguracao() == null) { configuracao = new ConfiguracaoEntity(); } else { configuracao = _configuracaoService.GetConfiguracao(); } configuracao.IsProducao = IsProducao; configuracao.CscHom = CscHom; configuracao.CscIdHom = CscIdHom; configuracao.EmailContabilidadeHom = EmailContabilidadeHom; configuracao.ProximoNumNFCeHom = ProximoNumNFCeHom; configuracao.ProximoNumNFeHom = ProximoNumNFeHom; configuracao.SerieNFCeHom = SerieNFCeHom; configuracao.SerieNFeHom = SerieNFeHom; configuracao.Csc = CscProd; configuracao.CscId = CscIdProd; configuracao.EmailContabilidade = EmailContabilidadeProd; configuracao.ProximoNumNFCe = ProximoNumNFCeProd; configuracao.ProximoNumNFe = ProximoNumNFeProd; configuracao.SerieNFCe = SerieNFCeProd; configuracao.SerieNFe = SerieNFeProd; _configuracaoService.Salvar(configuracao); _configuracao = null; ConfiguracaoAlteradaEvent(); wdw.Close(); } }
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); } } } }