Esempio n. 1
0
        private ReclassificacaoRetencao GerarNlDeRepasseParaRegionais(ParametrosGeracaoNl parametrosGeracao, KeyValuePair <string, List <ConfirmacaoPagamentoItem> > ops)
        {
            var rr      = new ReclassificacaoRetencao();
            var eventos = new List <ReclassificacaoRetencaoEvento>();
            var notas   = new List <ReclassificacaoRetencaoNota>();

            // TODO verificar propriedades
            DefinirPropriedadesComuns(parametrosGeracao, rr);

            var parametrizacao = parametrosGeracao.ParametrizacoesNl.FirstOrDefault(x => x.Despesas.Any(y => y.IdTipo == parametrosGeracao.ItemConfirmacao.IdTipoDespesa));

            if (parametrizacao != null)
            {
                rr.CodigoGestao    = parametrizacao.FavorecidaNumeroGestao.ToString(); // geral
                rr.CodigoInscricao = string.Empty;
                // rr.CodigoUnidadeGestora = parametrizacao.UnidadeGestora.HasValue ? parametrizacao.UnidadeGestora.Value.ToString() : string.Empty;
                // TODO valor
                // TODO UG Favorecido já definido no começo?
                // TODO Gestão Favorecido já definido no começo?
                rr.DescricaoObservacao1 = SepararObservacao(parametrizacao.Observacao, TAMANHOOBS, 1);
                rr.DescricaoObservacao2 = SepararObservacao(parametrizacao.Observacao, TAMANHOOBS, 2);
                rr.DescricaoObservacao3 = SepararObservacao(parametrizacao.Observacao, TAMANHOOBS, 3);


                GerarEventoEntrada(rr, eventos, parametrizacao);
                GerarEventosSaida(parametrosGeracao, rr, eventos, parametrizacao);
                // TODO Na coluna “Inscrição do Evento” de saída, é formatado com o número da “Unidade Gestora” seguido do número da Gestão, devera ser desconsiderada, UG e Gestão do usuário e obter UG e Gestão parametrizada para a NL.
            }

            // TODO gerar notas

            return(rr);
        }
Esempio n. 2
0
        private static void GerarEventosSaida(ParametrosGeracaoNl parametrosGeracao, ReclassificacaoRetencao rr, List <ReclassificacaoRetencaoEvento> eventos, NlParametrizacao parametrizacao)
        {
            var eventoSaidaParametrizado = parametrizacao.Eventos.FirstOrDefault(x => x.EntradaSaidaDescricao.Equals(EnumDirecaoEvento.Saida.ToString()));

            if (eventoSaidaParametrizado != null)
            {
                var evento = new ReclassificacaoRetencaoEvento();
                evento.InscricaoEvento = String.Format("{0}{1}{2}", parametrosGeracao.ItemConfirmacao.NumeroBancoPagador, parametrosGeracao.ItemConfirmacao.NumeroAgenciaPagador, parametrosGeracao.ItemConfirmacao.NumeroContaPagador);
                evento.Classificacao   = eventoSaidaParametrizado.NumeroClassificacao.ToString();
                evento.Fonte           = eventoSaidaParametrizado.NumeroFonte.ToString();

                if (parametrosGeracao.IsSubempenho)
                {
                    evento.NumeroEvento = eventoSaidaParametrizado.NumeroEvento.ToString();
                }
                else if (parametrosGeracao.IsRap)
                {
                    // Para RAP de exercício anterior de despesa prevista (Data da Realização igual a 0) e Ano da NL igual ao ano do exercício, evento = Parametrizado para o tipo de rap “N - Não Proces.Transf.P / Proces.De Exerc.Anterior”;
                    // Para RAP de exercício anterior de despesa prevista (Data da Realização igual a 0) e Ano da NL igual ao ano anterior ao exercício, evento igual a V - Não Proces.Transf.P / proces.De Exerc.Anteriores;
                    // Para RAP com Data da Realização diferente de 0 e Ano da NL igual ao ano anterior ao exercício, evento = Parametrizado para o tipo de rap “P - Processado do Exercício anterior”;
                    // Para RAP de outros exercícios anterior, evento R-Revigorados de Exercícios Anteriores

                    var isAnoAnterior = parametrosGeracao.Ano < parametrosGeracao.AnoAtual;
                    if (isAnoAnterior)
                    {
                        // TODO evento.NumeroEvento =  ???
                    }
                }
                eventos.Add(evento);
            }

            rr.Eventos = eventos;
        }
Esempio n. 3
0
        private void DefinirPropriedadesComuns(ParametrosGeracaoNl parametrosGeracao, ReclassificacaoRetencao rr)
        {
            rr.Id                   = 0;                                                                                                                                     // geral
            rr.DataEmissao          = rr.DataCadastro = DateTime.Now;                                                                                                        // geral
            rr.CodigoUnidadeGestora = parametrosGeracao.Ug;                                                                                                                  // geral

            rr.NumeroOriginalSiafemSiafisico = parametrosGeracao.IsNlPgObras ? parametrosGeracao.ItemConfirmacao.NumeroEmpenho : string.Empty;                               // geral
            rr.NormalEstorno       = parametrosGeracao.IsNlPgObras ? ((int)EnumNormalEstorno.Normal).ToString() : string.Empty;                                              // geral
            rr.AnoMedicao          = parametrosGeracao.IsNlPgObras ? FormatarAnoMedicao(parametrosGeracao.ItemConfirmacao.Referencia) : null;                                // geral
            rr.MesMedicao          = parametrosGeracao.IsNlPgObras ? FormatarMesMedicao(parametrosGeracao.ItemConfirmacao.Referencia) : null;                                // geral
            rr.NumeroCNPJCPFCredor = parametrosGeracao.ItemConfirmacao.NumeroCnpjCpfUgCredor;                                                                                // geral
            rr.CodigoGestaoCredor  = parametrosGeracao.ItemConfirmacao.CodigoGestaoCredor;                                                                                   // geral TODO como verificar se o favorecido é igual à UG?

            rr.DocumentoTipoId = parametrosGeracao.ConfirmacaoPagamento.IdTipoDocumento != null?Convert.ToInt32(parametrosGeracao.ConfirmacaoPagamento.IdTipoDocumento) : 0; // geral

            rr.NumeroDocumento = parametrosGeracao.ConfirmacaoPagamento.NumeroDocumento;                                                                                     // geral

            rr.AgrupamentoConfirmacao = parametrosGeracao.ConfirmacaoPagamento.CodigoAgrupamentoConfirmacaoPagamento;                                                        // geral

            rr.Origem = OrigemReclassificacaoRetencao.ConfirmacaoDePagamento;                                                                                                // geral
        }
        private static void GerarEventosSaida(ParametrosGeracaoNl parametrosGeracao, List <ReclassificacaoRetencaoEvento> eventos, NlParametrizacao parametrizacao)
        {
            var eventosSaidaParametrizado = parametrizacao.Eventos.Where(x => x.EntradaSaidaDescricao.Trim().Contains(EnumDirecaoEvento.Saida.ToString())).OrderBy(x => x.Id);

            if (eventosSaidaParametrizado != null)
            {
                var eventosFiltrados = RetornaEventosFiltrandoPeloTipoDocumento(parametrosGeracao.IsRap, eventosSaidaParametrizado);

                foreach (var eventoSaidaParametrizado in eventosFiltrados)
                {
                    var evento = new ReclassificacaoRetencaoEvento();
                    evento.InscricaoEvento = String.Format("{0}{1}{2}", parametrosGeracao.ItemConfirmacao.NumeroBancoPagador, parametrosGeracao.ItemConfirmacao.NumeroAgenciaPagador, parametrosGeracao.ItemConfirmacao.NumeroContaPagador);
                    evento.Classificacao   = eventoSaidaParametrizado.NumeroClassificacao.ToString();
                    evento.Fonte           = eventoSaidaParametrizado.NumeroFonte.ToString();
                    evento.NumeroEvento    = eventoSaidaParametrizado.NumeroEvento.ToString();
                    evento.ValorUnitario   = Convert.ToInt32(parametrosGeracao.valorAcumuladoNl);

                    eventos.Add(evento);
                }
            }
        }
Esempio n. 5
0
        private ReclassificacaoRetencao GerarNlRepasseFinanceiro(ParametrosGeracaoNl parametrosGeracao)
        {
            var rr      = new ReclassificacaoRetencao();
            var eventos = new List <ReclassificacaoRetencaoEvento>();
            var notas   = new List <ReclassificacaoRetencaoNota>();

            // TODO verificar propriedades
            DefinirPropriedadesComuns(parametrosGeracao, rr);

            //obj.CodigoEvento =  //adicionar?
            //obj.CodigoInscricao =  //adicionar?
            //obj.CodigoClassificacao =
            //obj.CodigoFonte =
            //obj.Valor = itemConfirmacao.ValorDocumento;
            //obj.DescricaoObservacao1 =
            //obj.Notas = //

            var parametrizacao = parametrosGeracao.ParametrizacoesNl.FirstOrDefault(x => x.Despesas.Any(y => y.IdTipo == parametrosGeracao.ItemConfirmacao.IdTipoDespesa));

            if (parametrizacao != null)
            {
                rr.CodigoGestao         = parametrizacao.FavorecidaNumeroGestao == 0 ? "16055" : parametrizacao.FavorecidaNumeroGestao.ToString(); // geral
                rr.CodigoInscricao      = String.Format("PE0{0}", parametrosGeracao.Ug);
                rr.CodigoUnidadeGestora = parametrizacao.UnidadeGestora.HasValue ? parametrizacao.UnidadeGestora.Value.ToString() : string.Empty;
                // TODO valor
                // TODO UG Favorecido já definido no começo?
                // TODO Gestão Favorecido já definido no começo?
                rr.DescricaoObservacao1 = SepararObservacao(parametrizacao.Observacao, TAMANHOOBS, 1);
                rr.DescricaoObservacao2 = SepararObservacao(parametrizacao.Observacao, TAMANHOOBS, 2);
                rr.DescricaoObservacao3 = SepararObservacao(parametrizacao.Observacao, TAMANHOOBS, 3);

                GerarEventoEntrada(rr, eventos, parametrizacao);
                GerarEventosSaida(parametrosGeracao, rr, eventos, parametrizacao);
            }

            // TODO gerar notas

            return(rr);
        }
        private static void GerarEventoEntrada(ParametrosGeracaoNl parametrosGeracao, ReclassificacaoRetencao rr, List <ReclassificacaoRetencaoEvento> eventos, NlParametrizacao parametrizacao)
        {
            var eventosEntradaParametrizado = parametrizacao.Eventos.Where(x => x.EntradaSaidaDescricao.Trim().Contains(EnumDirecaoEvento.Entrada.ToString())).OrderBy(x => x.Id);

            if (eventosEntradaParametrizado != null)
            {
                var eventosFiltrados = RetornaEventosFiltrandoPeloTipoDocumento(parametrosGeracao.IsRap, eventosEntradaParametrizado);

                foreach (var eventoEntradaParametrizado in eventosFiltrados)
                {
                    rr.CodigoEvento        = eventoEntradaParametrizado.NumeroEvento.ToString();
                    rr.CodigoClassificacao = eventoEntradaParametrizado.NumeroClassificacao.ToString();

                    var evento = new ReclassificacaoRetencaoEvento();
                    evento.NumeroEvento  = eventoEntradaParametrizado.NumeroEvento.ToString();
                    evento.Classificacao = eventoEntradaParametrizado.NumeroClassificacao.ToString();
                    evento.Fonte         = eventoEntradaParametrizado.NumeroFonte.ToString();
                    evento.ValorUnitario = Convert.ToInt32(parametrosGeracao.valorAcumuladoNl);
                    eventos.Add(evento);
                }

                rr.Eventos = eventos;
            }
        }
Esempio n. 7
0
        public AcaoEfetuada GerarNotasLancamento(ConfirmacaoPagamento confirmacaoPagamento, Usuario user, bool transmitir, int recursoId, EnumAcao action)
        {
            List <ReclassificacaoRetencao> nlsGeradas = new List <ReclassificacaoRetencao>();

            var regional = _regional.Buscar(new Regional {
                Id = Convert.ToInt32(user.RegionalId)
            }).FirstOrDefault();

            var ug = regional?.Uge;

            foreach (ConfirmacaoPagamentoItem itemConfirmacao in confirmacaoPagamento.Items)
            {
                var gerarNls = confirmacaoPagamento.IdTipoDocumento != 40 && itemConfirmacao.IdTipoDespesa.Value == 78;

                if (gerarNls)
                {
                    // usar caso existam RAPs
                    List <ParaRestoAPagar>  tiposRap        = _paraRestoAPagarService.Listar(new ParaRestoAPagar()).ToList();
                    List <NlParametrizacao> parametrizacoes = _parametrizacaoService.ObterTodas();


                    var tipoDocumento = confirmacaoPagamento.NumeroDocumento.Substring(0, 2);
                    var isSubempenho  = tipoDocumento.Equals(EnumTipoDocumento.Subempenho.ToString("d2"));
                    var isRap         = tipoDocumento.Equals(EnumTipoDocumento.Rap.ToString("d2"));
                    var isNlPgObras   = VerrificarNlPgObras(itemConfirmacao.NaturezaDespesa);

                    int anoAtual = int.Parse(DateTime.Today.ToString("YY"));
                    int ano      = anoAtual;

                    if (isSubempenho)
                    {
                        ano = int.Parse(confirmacaoPagamento.NumeroDocumento.Substring(5, 2));
                    }
                    else if (isRap)
                    {
                        ano = int.Parse(confirmacaoPagamento.NumeroDocumento.Substring(2, 2));
                    }


                    var parametrosGeracaoNl = new ParametrosGeracaoNl(confirmacaoPagamento, itemConfirmacao, parametrizacoes, tiposRap);
                    parametrosGeracaoNl.Ug           = ug;
                    parametrosGeracaoNl.IsNlPgObras  = isNlPgObras;
                    parametrosGeracaoNl.IsSubempenho = isSubempenho;
                    parametrosGeracaoNl.IsRap        = isRap;
                    parametrosGeracaoNl.AnoAtual     = anoAtual;
                    parametrosGeracaoNl.Ano          = ano;



                    // TODO codificar NLs de repasse
                    #region NLs de repasse
                    // NL de repasse financeiro
                    ReclassificacaoRetencao nlRepasseFinanceiro = GerarNlRepasseFinanceiro(parametrosGeracaoNl);
                    nlRepasseFinanceiro.CodigoInscricao = string.Format(FORMATOPE, ug);
                    nlsGeradas.Add(nlRepasseFinanceiro);

                    // NL de repasse de IR
                    if (true) // TODO Cadastrar NL de “Repasse de Imposto de Renda” se para a fonte o valor estiver diferente de 0.
                    {
                        ReclassificacaoRetencao nlRepasseDeIr = GerarNlRepasseDeIr(parametrosGeracaoNl);
                        nlsGeradas.Add(nlRepasseDeIr);
                    }


                    // NL de repasse para regionais
                    // TODO Cadastrar uma NL para cada OP (Ordem de Pagamento).

                    var ops = confirmacaoPagamento.Items.GroupBy(x => x.NumeroOp).Select(x => new KeyValuePair <string, List <ConfirmacaoPagamentoItem> >(x.Key, x.ToList()));
                    foreach (var op in ops)
                    {
                        ReclassificacaoRetencao nlDeRepasseParaRegionais = GerarNlDeRepasseParaRegionais(parametrosGeracaoNl, op);
                        nlsGeradas.Add(nlDeRepasseParaRegionais);
                    }
                    #endregion

                    // TODO codificar NLs de baixa
                    #region NLs de baixa
                    // NL de baixa jeton jari (por NE)
                    // NL de baixa de fornecedor com contrato (por credor + NE)
                    // NL para baixa de pagamento de licença prêmio (por OP)
                    // NL de baixa pagamento outros (por credor + NE)
                    // NL para baixa de devolução de caução (por OP)
                    // NL para baixa de pagamento de adiantamento (por credor + NE)
                    // NL para baixa de pagamento de restituição de multa (por NE)
                    // NL para baixa de pagamento de perito do quadro e judicial (por credor + NE)
                    // NL para baixa de pagamento de bonificação por resultados (por credor + NE)
                    #endregion


                    var idNlRepasseFinanceiro = _service.SalvarOuAlterar(nlRepasseFinanceiro, recursoId, (short)action); // TODO verificar

                    if (transmitir)
                    {
                        _service.Transmitir(idNlRepasseFinanceiro, user, recursoId); // TODO transmitir separadas?
                    }
                }
            }

            return(AcaoEfetuada.Sucesso);
        }
        private ReclassificacaoRetencao FormacaoBaseNl(ConfirmacaoPagamento confirmacaoPagamento, List <ParaRestoAPagar> tiposRap, IGrouping <dynamic, ConfirmacaoPagamentoItem> itensNl, List <NlParametrizacao> parametrizacoesCadastradas, Usuario usuario, List <Regional> regionais)
        {
            //Os itens ja se encontram separados por Tipo de Despesa
            var infoBaseItem = itensNl.FirstOrDefault();

            //Informações do item na parametrização
            var infoBaseParametrizacao = parametrizacoesCadastradas.Where(x => x.Id == infoBaseItem.IdNlParametrizacao).FirstOrDefault();

            infoBaseParametrizacao.Eventos = _nlParametrizacaoEventoDal.Fetch(new NlParametrizacaoEvento {
                IdNlParametrizacao = infoBaseParametrizacao.Id
            });



            ReclassificacaoRetencao entidadeNl = new ReclassificacaoRetencao();



            if (regionais.Any(x => x.Descricao.Contains(infoBaseItem.IdRegional.ToString())))
            {
                entidadeNl.RegionalId = regionais.Where(x => x.Descricao.Contains(infoBaseItem.IdRegional.ToString())).FirstOrDefault().Id;
            }

            //Atributos em comum
            entidadeNl.Id                   = 0;                                      // geral
            entidadeNl.DataEmissao          = entidadeNl.DataCadastro = DateTime.Now; // geral
            entidadeNl.CodigoUnidadeGestora = infoBaseParametrizacao.UnidadeGestora.HasValue ? infoBaseParametrizacao.UnidadeGestora.Value.ToString() : string.Empty;
            entidadeNl.NumeroProcesso       = infoBaseItem.NumeroProcesso;
            entidadeNl.NumeroDocumento      = infoBaseItem.NrDocumento;
            entidadeNl.DataCadastro         = DateTime.Now.Date;

            entidadeNl.CodigoAplicacaoObra       = infoBaseItem.CodigoObra;
            entidadeNl.NumeroCNPJCPFFornecedorId = infoBaseItem.NumeroCnpjCpfUgCredor;
            entidadeNl.NormalEstorno             = "1";
            entidadeNl.NotaLancamenoMedicao      = infoBaseItem.NumeroNlDocumento;
            entidadeNl.NumeroContrato            = infoBaseItem.NumeroContrato;
            entidadeNl.CadastroCompleto          = true;
            entidadeNl.Origem = OrigemReclassificacaoRetencao.ConfirmacaoDePagamento;
            // entidadeNl.NumeroCNPJCPFCredor = infoBaseParametrizacao.FavorecidaCnpjCpfUg; comentado  - verificar
            entidadeNl.NumeroCNPJCPFCredor  = infoBaseItem.NumeroCnpjCpfUgCredor;
            entidadeNl.CodigoGestaoCredor   = infoBaseItem.CodigoGestaoCredor;
            entidadeNl.CodigoGestao         = "16055";
            entidadeNl.DescricaoObservacao1 = SepararObservacao(infoBaseParametrizacao.Observacao, TAMANHOOBS, 1);
            entidadeNl.DescricaoObservacao2 = SepararObservacao(infoBaseParametrizacao.Observacao, TAMANHOOBS, 2);
            entidadeNl.DescricaoObservacao3 = SepararObservacao(infoBaseParametrizacao.Observacao, TAMANHOOBS, 3);
            entidadeNl.Valor = itensNl.Sum(x => x.ValorDocumento * 100) ?? 0;
            entidadeNl.AgrupamentoConfirmacao   = confirmacaoPagamento.CodigoAgrupamentoConfirmacaoPagamento;
            entidadeNl.id_confirmacao_pagamento = confirmacaoPagamento.Id;
            AtribuiValorCampoAnoExercicio(infoBaseItem, entidadeNl);

            var NLPGOBRAS = AtribuiValoresQuandoNLPGOBRAS(usuario, infoBaseItem, infoBaseParametrizacao, entidadeNl);

            List <ReclassificacaoRetencaoEvento> eventos = new List <ReclassificacaoRetencaoEvento>();

            var parametrosGeracaoNl = new ParametrosGeracaoNl(confirmacaoPagamento, infoBaseItem, null, tiposRap);
            var tipoDocumento       = infoBaseItem.NumeroDocumentoGerador.Substring(0, 2);

            parametrosGeracaoNl.IsNlPgObras          = NLPGOBRAS;
            parametrosGeracaoNl.IsSubempenho         = tipoDocumento.Equals(EnumTipoDocumento.Subempenho.GetHashCode().ToString("d2"));
            parametrosGeracaoNl.IsRap                = tipoDocumento.Equals(EnumTipoDocumento.Rap.GetHashCode().ToString("d2"));
            parametrosGeracaoNl.valorAcumuladoNl     = entidadeNl.Valor;
            entidadeNl.NumeroOriginalSiafemSiafisico = infoBaseItem.NumeroEmpenhoSiafem;
            entidadeNl.CodigoCredorOrganizacaoId     = infoBaseItem.CodigoOrganizacaoCredor ?? 0;

            //***********novos campos - rafael magna see ************
            entidadeNl.DocumentoTipoId = infoBaseItem.IdTipoDocumento;
            //********** fim ****************************************

            GerarEventosSaida(parametrosGeracaoNl, eventos, infoBaseParametrizacao);
            GerarEventoEntrada(parametrosGeracaoNl, entidadeNl, eventos, infoBaseParametrizacao);
            entidadeNl.NormalEstorno = ((int)EnumNormalEstorno.Normal).ToString();


            entidadeNl.itensPertenceNl = itensNl.ToList();

            //entidade.AgrupamentoConfirmacao = parametrosGeracao.ConfirmacaoPagamento.CodigoAgrupamentoConfirmacaoPagamento; // geral



            return(entidadeNl);
        }