Beispiel #1
0
 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);
        }