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); }
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; }
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); } } }
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; } }
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); }