public static Margens Criar(MargensEntidade Margens) { return(new Margens { CD_PLANO = "", CD_FUNDACAO = Margens.CD_FUNDACAO, DT_VIGENCIA = Margens.DT_VIGENCIA, CD_MODAL = Margens.CD_MODAL, CD_NATUR = Margens.CD_NATUR, TP_SALDO_RP = Margens.TP_SALDO_RP, TP_TX_ATIVO = Margens.TP_TX_ATIVO, TX_ATIVO_RP = Margens.TX_ATIVO_RP, TX_ATIVO_SP = Margens.TX_ATIVO_SP, TX_ATIVO_CR = Margens.TX_ATIVO_CR, TX_ATIVO_MC = Margens.TX_ATIVO_MC, VL_ATIVO_RP = Margens.VL_ATIVO_RP, VL_ATIVO_SP = Margens.VL_ATIVO_SP, VL_ATIVO_CR = Margens.VL_ATIVO_CR, TETO_MAXIMO_ATIVO = Margens.TETO_MAXIMO_ATIVO, TP_TX_ASSIST = Margens.TP_TX_ASSIST, TP_BENEFICIO = Margens.TP_BENEFICIO, TX_ASSIST_BL = Margens.TX_ASSIST_BL, TX_ASSIST_BB = Margens.TX_ASSIST_BB, VL_ASSIST_BL = Margens.VL_ASSIST_BL, VL_ASSIST_BB = Margens.VL_ASSIST_BB, TETO_MAXIMO_ASSIST = Margens.TETO_MAXIMO_ASSIST, TX_ASSIST_MC = Margens.TX_ASSIST_MC, SSCA_ASSIST = Margens.SSCA_ASSIST, SSCA_ATIVO = Margens.SSCA_ATIVO, TX_ATIVO_PREST_SP = Margens.TX_ATIVO_PREST_SP, VL_ATIVO_PREST_SP = Margens.VL_ATIVO_PREST_SP, TX_ASSIST_PREST_BL = Margens.TX_ASSIST_PREST_BL, VL_ASSIST_PREST_BL = Margens.VL_ASSIST_PREST_BL, CD_EMPRESA = Margens.CD_EMPRESA, TP_DT_CONV_RP = Margens.TP_DT_CONV_RP, MARGEM_CSA_EXTERNA = Margens.MARGEM_CSA_EXTERNA, TX_FIADOR_ATIVO_RP = Margens.TX_FIADOR_ATIVO_RP, MARGEM_BPA_EXTERNA = Margens.MARGEM_BPA_EXTERNA, TX_ASSIST_RMV = Margens.TX_ASSIST_RMV, VL_ASSIST_RMV = Margens.VL_ASSIST_RMV, TX_ASSIST_PREST_CP = Margens.TX_ASSIST_PREST_CP, ID_ATIVOS_SAD = Margens.ID_ATIVOS_SAD, TX_ATIVO_PREST_MEDIA_SP = Margens.TX_ATIVO_PREST_MEDIA_SP, TX_ASSISTIDO_PREST_MEDIA_SP = Margens.TX_ASSISTIDO_PREST_MEDIA_SP, DT_CONVERSAO_RP = Margens.DT_CONVERSAO_RP, TX_MANTENEDOR_RP = Margens.TX_MANTENEDOR_RP, TX_MANTENEDOR_PREST_SP = Margens.TX_MANTENEDOR_PREST_SP, VL_MANTENEDOR_RP = Margens.VL_MANTENEDOR_RP, VL_MANTENEDOR_PREST_SP = Margens.VL_MANTENEDOR_PREST_SP, QTD_ASSIST_SAL_MININO = Margens.QTD_ASSIST_SAL_MININO, TX_MANTENEDOR_CR = Margens.TX_MANTENEDOR_CR, TX_MANTENEDOR_SP = Margens.TX_MANTENEDOR_SP, VL_MANTENEDOR_CR = Margens.VL_MANTENEDOR_CR, VL_MANTENEDOR_SP = Margens.VL_MANTENEDOR_SP, TETO_MAXIMO_MANTENEDOR = Margens.TETO_MAXIMO_MANTENEDOR, SSCA_MANTENEDOR = Margens.SSCA_MANTENEDOR, TX_DIFERIDO_CR = Margens.TX_DIFERIDO_CR, VL_DIFERIDO_CR = Margens.VL_DIFERIDO_CR, TX_DIFERIDO_RP = Margens.TX_DIFERIDO_RP, VL_DIFERIDO_RP = Margens.VL_DIFERIDO_RP, TX_DIFERIDO_SP = Margens.TX_DIFERIDO_SP, VL_DIFERIDO_SP = Margens.VL_DIFERIDO_SP, TETO_MAXIMO_DIFERIDO = Margens.TETO_MAXIMO_DIFERIDO, SSCA_DIFERIDO = Margens.SSCA_DIFERIDO, TX_DIFERIDO_PREST_SP = Margens.TX_DIFERIDO_PREST_SP, VL_DIFERIDO_PREST_SP = Margens.VL_DIFERIDO_PREST_SP, PERC_PREST_MIN_ATIVO = Margens.PERC_PREST_MIN_ATIVO, TIPO_PREST_MIN_ATIVO = Margens.TIPO_PREST_MIN_ATIVO, PERC_PREST_MIN_ASSISTIDO = Margens.PERC_PREST_MIN_ASSISTIDO, TIPO_PREST_MIN_ASSISTIDO = Margens.TIPO_PREST_MIN_ASSISTIDO, PERC_PREST_MIN_MANTENEDOR = Margens.PERC_PREST_MIN_MANTENEDOR, TIPO_PREST_MIN_MANTENEDOR = Margens.TIPO_PREST_MIN_MANTENEDOR, PERC_PREST_MIN_DIFERIDO = Margens.PERC_PREST_MIN_DIFERIDO, TIPO_PREST_MIN_DIFERIDO = Margens.TIPO_PREST_MIN_DIFERIDO, TETO_MINIMO_ATIVO = Margens.TETO_MINIMO_ATIVO, TETO_MINIMO_ASSISTIDO = Margens.TETO_MINIMO_ASSISTIDO, TETO_MINIMO_MANTENEDOR = Margens.TETO_MINIMO_MANTENEDOR, TETO_MINIMO_DIFERIDO = Margens.TETO_MINIMO_DIFERIDO, TX_FIADOR_ATIVO_SP = Margens.TX_FIADOR_ATIVO_SP, TX_FIADOR_ATIVO_CR = Margens.TX_FIADOR_ATIVO_CR, TX_FIADOR_ASSIST_BL = Margens.TX_FIADOR_ASSIST_BL, TX_FIADOR_ASSIST_BB = Margens.TX_FIADOR_ASSIST_BB, VL_TETO_MINIMO_FIADOR_ATIVO = Margens.VL_TETO_MINIMO_FIADOR_ATIVO, VL_TETO_MINIMO_FIADOR_ASSIST = Margens.VL_TETO_MINIMO_FIADOR_ASSIST, PR_MAX_AVALIZADO_ATIVO = Margens.PR_MAX_AVALIZADO_ATIVO, PR_MAX_AVALIZADO_ASSIST = Margens.PR_MAX_AVALIZADO_ASSIST, LIMITE_AVALIZADO_ATIVO = Margens.LIMITE_AVALIZADO_ATIVO, LIMITE_AVALIZADO_ASSIST = Margens.LIMITE_AVALIZADO_ASSIST, PERC_LIM_DISP_ATIVO = Margens.PERC_LIM_DISP_ATIVO, PERC_LIM_DISP_ASSISTIDO = Margens.PERC_LIM_DISP_ASSISTIDO, PERC_LIM_DISP_MANTENEDOR = Margens.PERC_LIM_DISP_MANTENEDOR, PERC_LIM_DISP_DIFERIDO = Margens.PERC_LIM_DISP_DIFERIDO, VL_MAX_LIQUIDO_ASSIST = Margens.VL_MAX_LIQUIDO_ASSIST, VL_MAX_LIQUIDO_RENOV_ASSIST = Margens.VL_MAX_LIQUIDO_RENOV_ASSIST, ID_SALARIO_ATIVO = Margens.ID_SALARIO_ATIVO, ID_SALARIO_ASSISTIDO = Margens.ID_SALARIO_ASSISTIDO, ID_SALARIO_AUTOPATROCINADO = Margens.ID_SALARIO_AUTOPATROCINADO, ID_SALARIO_DIFERIDO = Margens.ID_SALARIO_DIFERIDO, TETO_MAX_REFORMA_ASSIST = Margens.TETO_MAX_REFORMA_ASSIST, DT_CONVERSAO_RP_AP = Margens.DT_CONVERSAO_RP_AP, TP_DT_CONV_RP_AP = Margens.TP_DT_CONV_RP_AP, TP_SALDO_RP_AP = Margens.TP_SALDO_RP_AP, DT_MAX_IND_AT = Margens.DT_MAX_IND_AT, DT_MAX_IND_AP = Margens.DT_MAX_IND_AP, DT_MAX_IND_DF = Margens.DT_MAX_IND_DF, TP_SALDO_RP_DF = Margens.TP_SALDO_RP_DF, TP_DT_CONV_RP_DF = Margens.TP_DT_CONV_RP_DF, DT_CONVERSAO_RP_DF = Margens.DT_CONVERSAO_RP_DF, RESGATE_RESERVA_AT = Margens.RESGATE_RESERVA_AT, RESGATE_RESERVA_AP = Margens.RESGATE_RESERVA_AP, RESGATE_RESERVA_DF = Margens.RESGATE_RESERVA_DF, TX_ATIVO_VINC_MAIOR_SP = Margens.TX_ATIVO_VINC_MAIOR_SP, VL_ATIVO_VINC_MAIOR_SP = Margens.VL_ATIVO_VINC_MAIOR_SP, TX_ATIVO_VINC_MENOR_SP = Margens.TX_ATIVO_VINC_MENOR_SP, VL_ATIVO_VINC_MENOR_SP = Margens.VL_ATIVO_VINC_MENOR_SP, TMP_VINC_PATROC = Margens.TMP_VINC_PATROC, QTD_MESES_VINC = Margens.QTD_MESES_VINC, ID_INSS = Margens.ID_INSS, CD_FUNDO_RESERVA = Margens.CD_FUNDO_RESERVA }); }
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); }