public AcaoEfetuada Excluir(ReclassificacaoRetencaoNota entity, int resource, short action)
        {
            try
            {
                _repository.Remove(entity.Id);

                return(AcaoEfetuada.Sucesso);
            }
            catch (Exception ex)
            {
                throw SaveLog(ex, actionId: action, functionalityId: resource);
            }
        }
        public int SalvarOuAlterar(ReclassificacaoRetencaoNota entity, int resource, short action)
        {
            try
            {
                entity.Id = _repository.Save(entity);

                return(entity.Id);
            }
            catch (Exception ex)
            {
                throw SaveLog(ex, action, resource);
            }
        }
 public IEnumerable <ReclassificacaoRetencaoNota> Buscar(ReclassificacaoRetencaoNota entity)
 {
     return(_repository.Fetch(entity));
 }
        private string GerarNlPorForma(ConfirmacaoPagamento confirmacao, Usuario usuario, List <Regional> regionais, int recursoId = 0)
        {
            try
            {
                List <ReclassificacaoRetencao> nlsGeradas = new List <ReclassificacaoRetencao>();

                List <ParaRestoAPagar>  tiposRap = _paraRestoAPagarService.Listar(new ParaRestoAPagar()).ToList();
                List <NlParametrizacao> parametrizacoesCadastradas = _parametrizacaoService.ObterTodas();

                // inicio da area de Nl de repasse


                var nlRepasse = FormacaoRepasse(confirmacao, tiposRap, parametrizacoesCadastradas, usuario, regionais);

                var idnlRepasseLinha = _reclassificacaoRetencaoService.SalvarOuAlterar(nlRepasse, 25, (short)EnumAcao.Inserir);

                // fim do repasse
                if (confirmacao.Items.Any(x => x.FormaGerar == EnumFormaGerarNl.CredorEmpenho))
                {
                    var nlsPorCredorEmpenhoDespesa = ObterItensPorCredorEmpenhoDespesa(confirmacao.Items.Where(x => x.FormaGerar == EnumFormaGerarNl.CredorEmpenho).ToList());

                    foreach (var nlPorCredorEmpenhoDespesa in nlsPorCredorEmpenhoDespesa)
                    {
                        var baseNl = FormacaoBaseNl(confirmacao, tiposRap, nlPorCredorEmpenhoDespesa, parametrizacoesCadastradas, usuario, regionais);

                        nlsGeradas.Add(NlPorTipoDespesa(nlPorCredorEmpenhoDespesa.ToList(), baseNl));
                    }
                }

                if (confirmacao.Items.Any(x => x.FormaGerar == EnumFormaGerarNl.Empenho))
                {
                    var nlsPorEmpenhoDespesa = ObterItensPorEmpenhoDespesa(confirmacao.Items.Where(x => x.FormaGerar == EnumFormaGerarNl.Empenho).ToList());
                    foreach (var nlPorEmpenhoDespesa in nlsPorEmpenhoDespesa)
                    {
                        var baseNl = FormacaoBaseNl(confirmacao, tiposRap, nlPorEmpenhoDespesa, parametrizacoesCadastradas, usuario, regionais);

                        nlsGeradas.Add(NlPorTipoDespesa(nlPorEmpenhoDespesa.ToList(), baseNl));
                    }
                }

                if (confirmacao.Items.Any(x => x.FormaGerar == EnumFormaGerarNl.Op))
                {
                    var nlsPorOpDespesa = ObterItensPorOpDespesa(confirmacao.Items.Where(x => x.FormaGerar == EnumFormaGerarNl.Op).ToList());
                    foreach (var nlPorOpDespesa in nlsPorOpDespesa)
                    {
                        var baseNl = FormacaoBaseNl(confirmacao, tiposRap, nlPorOpDespesa, parametrizacoesCadastradas, usuario, regionais);

                        nlsGeradas.Add(NlPorTipoDespesa(nlPorOpDespesa.ToList(), baseNl));
                    }
                }



                // com os dados organizados  - processa para amrmazenar - rafael magna 2018
                foreach (var nlGerada in nlsGeradas)
                {
                    // 25 - Reclassificação Retenção
                    var idReclassificacaoRentencao = _reclassificacaoRetencaoService.SalvarOuAlterar(nlGerada, 25, (short)EnumAcao.Inserir);

                    // ADICIONA OS DADOS nl-> NOTA
                    ReclassificacaoRetencaoNota nota = new ReclassificacaoRetencaoNota();
                    nota.IdReclassificacaoRetencao = idReclassificacaoRentencao;
                    nota.Ordem            = 1;
                    nota.CodigoNotaFiscal = "NADA CONSTA";
                    _reclassificacaoRetencaoNotaService.SalvarOuAlterar(nota, recursoId, (short)EnumAcao.Inserir);
                    // FIM DE ADICAO NOTA

                    foreach (var item in nlGerada.itensPertenceNl)
                    {
                        _paraConfirmacaoPagamentoItemDal.EditReclassificacaoRetencao(new ConfirmacaoPagamentoItem {
                            Id = item.Id, IdReclassificacaoRetencao = idReclassificacaoRentencao
                        });
                    }
                }
                // gerar os totais

                // fim
                return("sucesso");
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }