public static TaxaEncargo Criar(TaxasEncargosEntidade row) { return(new TaxaEncargo { COD_IND_JU_MORA = row.COD_IND_JU_MORA, CONSIDERAR_JUROS_CONC = row.CONSIDERAR_JUROS_CONC, CORRIGE_SALDO_QUITACAO_MANUAL = row.CORRIGE_SALDO_QUITACAO_MANUAL, CORRIGE_SALDO_RENOVACAO = row.CORRIGE_SALDO_RENOVACAO, CORRIGIR_SALDO_DEV = row.CORRIGIR_SALDO_DEV, DIA_PRO_RATA_SALDO = row.DIA_PRO_RATA_SALDO, SEQUENCIA = row.SEQUENCIA, CARENCIA_DIA_UTIL = row.CARENCIA_DIA_UTIL, CARENCIA_VENCIMENTO = row.CARENCIA_VENCIMENTO, CONSIDERAR_CORR_PREST = row.CONSIDERAR_CORR_PREST, CONSIDERAR_MULTA = row.CONSIDERAR_MULTA, CORRIGIR_PREST_ATRASO = row.CORRIGIR_PREST_ATRASO, PERIODO_CARENCIA = row.PERIODO_CARENCIA, TX_JUROS_MORA = row.TX_JUROS_MORA, TX_MULTA = row.TX_MULTA, DT_INIC_VIGENCIA = row.DT_INIC_VIGENCIA, DT_TERM_VIGENCIA = row.DT_TERM_VIGENCIA, TP_COBRANCA_IOF = row.TP_COBRANCA_IOF, TX_IOF = row.TX_IOF, TX_IOF_FIXA = row.TX_IOF_FIXA, TP_COBRANCA_TX = row.TP_COBRANCA_TX, TP_COBRANCA_SEGURO = row.TP_COBRANCA_SEGURO, CONSIDERAR_RENOVACOES_ADM = row.CONSIDERAR_RENOVACOES_ADM, CONSIDERAR_RENOVACOES_SEGUROS = row.CONSIDERAR_RENOVACOES_SEGUROS, CONSIDERAR_RENOVACOES_INAD = row.CONSIDERAR_RENOVACOES_INAD, TP_COBRANCA_INAD = row.TP_COBRANCA_INAD, TX_ADM = row.TX_ADM, TX_INAD = row.TX_INAD, TX_SEGURO = row.TX_SEGURO, COBRAR_JUROS_NA_REFORMA = row.COBRAR_JUROS_NA_REFORMA, CONSIDERAR_IOF_COMPL_INAD = row.CONSIDERAR_IOF_COMPL_INAD, TIPO_CALC_ADM = row.TIPO_CALC_ADM, SEGURO_TABELADO = row.SEGURO_TABELADO, IOF_IN1609 = row.IOF_IN1609, IND_PROJECAO = row.IND_PROJECAO }); }
public decimal CalcularMargem(PlanoVinculadoEntidade plano, string cdEmpresa, decimal cdModal, decimal cdNatur, DateTime dtCredito, string matricula, decimal origem, MargensEntidade margem, TaxasEncargosEntidade encargo, TaxasConcessaoEntidade taxaConcessao) { var valorMargemCalculada = 0M; var parametros = new ParametrosProxy().Buscar(); if (parametros.REGRA_MARGEM_PLANO == DMN_SN.SIM) { //TODO: Regra pelo plano } else { if (margem.MARGEM_BPA_EXTERNA == "E") { decimal numeroGrFamil = 0; var margemCalDados = new MargensCalculadasProxy() .BuscarPorFundacaoEmpresaOrigemMatriculaGrupo(plano.CD_FUNDACAO, cdEmpresa, origem, matricula, numeroGrFamil); valorMargemCalculada = margemCalDados.VL_MARGEM ?? 0; } else if (margem.MARGEM_BPA_EXTERNA == "C") { // Regra não existia no simulador antigo } decimal przMax = ObterPrazoMaximo(cdNatur); decimal percTaxa = taxaConcessao.TX_JUROS.Value / 100; decimal jurosPorPrazo = (decimal)Math.Pow((double)(1 + percTaxa), (double)przMax); decimal w_tx_assist_prest_bl = margem.TX_ASSIST_MC.Value; decimal w_vl_prest = plano.UltimoSalario * (w_tx_assist_prest_bl / 100); decimal w_fator_taxas = 1; DateTime dtAniversarioNatureza = ObterDataAniversarioNatureza(cdNatur, dtCredito); decimal diferencaDias = (dtAniversarioNatureza - dtCredito).Days; decimal w_fator_aplicado = Convert.ToDecimal(Math.Pow((double)(1 + percTaxa), (double)(diferencaDias / dtCredito.UltimoDiaDoMes().Day))); switch (plano.CD_CATEGORIA) { case DMN_CATEGORIA.ATIVO: valorMargemCalculada = plano.UltimoSalario * (margem.TX_ATIVO_SP.Value / 100); // futuramente utilizar parametrização break; case DMN_CATEGORIA.AUTOPATROCINIO: valorMargemCalculada = plano.UltimoSalario * (margem.TX_MANTENEDOR_SP.Value / 100); // futuramente utilizar parametrização break; case DMN_CATEGORIA.DIFERIDO: valorMargemCalculada = plano.UltimoSalario * (margem.TX_MANTENEDOR_SP.Value / 100); // futuramente utilizar parametrização break; case DMN_CATEGORIA.EM_LICENCA: //Ativos, Autopatrocinados ou Em licença valorMargemCalculada = plano.UltimoSalario * (margem.TX_ASSIST_BL.Value / 100); // futuramente utilizar parametrização break; case DMN_CATEGORIA.ASSISTIDO: w_vl_prest = w_vl_prest / w_fator_taxas; //valorMargemCalculada = Convert.ToDecimal(GeneralFinanceFormulas.CalcPresentValue(percTaxa, przMax, w_vl_prest)) / w_fator_aplicado; break; } } return(valorMargemCalculada); }