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