Exemplo n.º 1
0
        public static Decimal CalculaValorNET(Contrato contrato, PersistenceManager pm, DateTime?admissao, DateTime?vencimento, DateTime?dataReferencia)
        {
            Contrato.eTipoAcomodacao tipoAcomodacao = (Contrato.eTipoAcomodacao)contrato.TipoAcomodacao;

            IList <TabelaValor> lista = null;

            if (admissao == null || vencimento == null)
            {
                lista = TabelaValor.CarregarTabelaAtual(contrato.ContratoADMID, pm);
            }
            else
            {
                lista = TabelaValor.CarregarTabelaVigente(contrato.ContratoADMID, admissao.Value, vencimento.Value, pm);
            }

            if (lista == null || lista.Count == 0)
            {
                return(0);
            }

            IList <TabelaValorItem> itens = TabelaValorItem.CarregarPorTabela(lista[0].ID, contrato.PlanoID, pm);

            if (itens == null || itens.Count == 0)
            {
                return(0);
            }

            IList <ContratoBeneficiario> beneficiarios = ContratoBeneficiario.CarregarPorContratoID_Parcial(contrato.ID, true, false, pm);

            int     beneficiarioIdade = 0;
            Decimal valorTotal        = 0;

            foreach (ContratoBeneficiario beneficiario in beneficiarios)
            {
                if (beneficiario.ID == null)
                {
                    return(0);
                }

                if (dataReferencia == null)
                {
                    beneficiarioIdade = Beneficiario.CalculaIdade(beneficiario.BeneficiarioDataNascimento);
                }
                else
                {
                    beneficiarioIdade = Beneficiario.CalculaIdade(beneficiario.BeneficiarioDataNascimento, dataReferencia.Value);
                }

                foreach (TabelaValorItem _item in itens)
                {
                    if (beneficiarioIdade >= _item.IdadeInicio && _item.IdadeFim == 0)
                    {
                        if (tipoAcomodacao == Contrato.eTipoAcomodacao.quartoComun)
                        {
                            valorTotal += _item.QCValorPagamento;
                        }
                        else
                        {
                            valorTotal += _item.QPValorPagamento;
                        }
                        break;
                    }
                    else if (beneficiarioIdade >= _item.IdadeInicio && beneficiarioIdade <= _item.IdadeFim)
                    {
                        if (tipoAcomodacao == Contrato.eTipoAcomodacao.quartoComun)
                        {
                            valorTotal += _item.QCValorPagamento;
                        }
                        else
                        {
                            valorTotal += _item.QPValorPagamento;
                        }
                        break;
                    }
                }
            }

            beneficiarios = null;
            return(valorTotal);
        }
Exemplo n.º 2
0
        public static Decimal CalculaValorNET(Object contratoId, Object contratoAdmId, Object planoId, Object beneficiarioId, Int32 contratoTipoAcomodacao, DateTime?admissao, DateTime beneficiarioDataNascimento, DateTime?vencimento, DateTime?dataReferencia, out Int32 beneficiarioIdade, PersistenceManager pm)
        {
            Contrato.eTipoAcomodacao tipoAcomodacao = (Contrato.eTipoAcomodacao)contratoTipoAcomodacao;
            IList <TabelaValor>      lista          = null;

            beneficiarioIdade = -1;

            if (admissao == null || vencimento == null)
            {
                lista = TabelaValor.CarregarTabelaAtual(contratoAdmId, pm);
            }
            else
            {
                lista = TabelaValor.CarregarTabelaVigente(contratoAdmId, admissao.Value, vencimento.Value, pm);
            }

            if (lista == null || lista.Count == 0)
            {
                return(0);
            }

            IList <TabelaValorItem> itens = TabelaValorItem.CarregarPorTabela(lista[0].ID, planoId, pm);

            if (itens == null || itens.Count == 0)
            {
                return(0);
            }

            if (dataReferencia == null)
            {
                beneficiarioIdade = Beneficiario.CalculaIdade(beneficiarioDataNascimento);
            }
            else
            {
                beneficiarioIdade = Beneficiario.CalculaIdade(beneficiarioDataNascimento, dataReferencia.Value);
            }

            Decimal valorTotal = 0;

            foreach (TabelaValorItem _item in itens)
            {
                if (beneficiarioIdade >= _item.IdadeInicio && _item.IdadeFim == 0)
                {
                    if (tipoAcomodacao == Contrato.eTipoAcomodacao.quartoComun)
                    {
                        valorTotal += _item.QCValorPagamento;
                    }
                    else
                    {
                        valorTotal += _item.QPValorPagamento;
                    }
                    break;
                }
                else if (beneficiarioIdade >= _item.IdadeInicio && beneficiarioIdade <= _item.IdadeFim)
                {
                    if (tipoAcomodacao == Contrato.eTipoAcomodacao.quartoComun)
                    {
                        valorTotal += _item.QCValorPagamento;
                    }
                    else
                    {
                        valorTotal += _item.QPValorPagamento;
                    }
                    break;
                }
            }

            return(valorTotal);
        }