Example #1
0
        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);
                    }
                }
            }
        }