public ActionResult validarVencimento(int?idContribuicao, DateTime?dtVencimento) { Contribuicao OContribuicao = this.OContribuicaoBL.carregar(UtilNumber.toInt32(idContribuicao)); if (OContribuicao == null) { return(Json(new JsonMessage { error = true, message = "Não foi possível encontrar a cobrança." }, JsonRequestBehavior.AllowGet)); } if (!dtVencimento.HasValue) { return(Json(new JsonMessage { error = true, message = "Data de Vencimento não informada." }, JsonRequestBehavior.AllowGet)); } if (OContribuicao.flagVencimentoVariado()) { return(Json(new { error = false, dtVencimento = "", dtInicioVigencia = "", dtFimVigencia = "" }, JsonRequestBehavior.AllowGet)); } var OVencimento = OContribuicao.retornarProximoVencimento(dtVencimento.Value); if (OVencimento == null) { return(Json(new JsonMessage { error = true, message = "A data de vencimento informada é inválida." }, JsonRequestBehavior.AllowGet)); } return(Json(new { error = false, dtVencimento = dtVencimento.exibirData().ToString(), dtInicioVigencia = OVencimento.dtInicioVigencia.exibirData().ToString(), dtFimVigencia = OVencimento.dtFimVigencia.exibirData().ToString() }, JsonRequestBehavior.AllowGet)); }
/// <summary> ///Vincular uma contribuicao com o associado ///Pode-se informar qual contribuição será vinculada ///Se nao for informada nenhuma contribuicao, o sistema irá considerar a contribuicao padrao do associado /// </summary> public UtilRetorno gerarCobranca(Associado OAssociado, Contribuicao OContribuicao, DateTime?dtVencimento = null, DateTime?dtNovoVencimento = null, bool flagPrimeiraCobranca = false, decimal valorCustomizado = 0) { if (OAssociado?.TipoAssociado == null) { return(UtilRetorno.newInstance(true, "O associado informado não foi localizado.")); } int?idContribuicao = OContribuicao?.id; if (idContribuicao.toInt() == 0) { } if (OContribuicao == null || !OContribuicao.listaContribuicaoVencimento.Any()) { OContribuicao = this.OContribuicaoBL.carregar(idContribuicao.toInt()); } if (OContribuicao == null) { return(UtilRetorno.newInstance(true, "A contribuição informada não foi localizada.")); } var TabelaPreco = OContribuicao.retornarTabelaVigente(); if (TabelaPreco.id == 0) { return(UtilRetorno.newInstance(true, "Não há tabela de preços configuradas para a contribuição.")); } var Vencimento = OContribuicao.retornarProximoVencimento(dtVencimento); var Preco = flagPrimeiraCobranca ? TabelaPreco.retornarPrecoAtual(UtilNumber.toInt32(OAssociado.idTipoAssociado), DateTime.Today) : TabelaPreco.retornarPreco(UtilNumber.toInt32(OAssociado.idTipoAssociado)); if (!dtVencimento.HasValue) { dtVencimento = Vencimento.dtVencimento; } if (flagPrimeiraCobranca) { dtNovoVencimento = DateTime.Today.AddDays(UtilNumber.toInt32(OAssociado.TipoAssociado.diasPrazoPrimeiraCobranca)); //Caso o vencimento seja por admissão ou por ultimo pagamento, enviamos a data de vencimento vazia no ato do cadastro. //Por este motivo atualizamos a competência com base na data de hoje. if (OContribuicao.flagVencimentoVariado() && !Vencimento.dtVencimento.HasValue) { dtVencimento = DateTime.Today; Vencimento.dtVencimento = dtNovoVencimento; Vencimento.dtInicioVigencia = dtNovoVencimento; Vencimento.dtFimVigencia = dtNovoVencimento.Value.AddYears(1); } } if (!dtVencimento.HasValue) { return(UtilRetorno.newInstance(true, "O vencimento não está configurado ou não foi informado para essa contribuição.")); } bool flagVencimentoValido = this.validarVencimento(OContribuicao, dtVencimento.Value); if (!flagVencimentoValido) { return(UtilRetorno.newInstance(true, "O vencimento informado não está dentro das opções válidas para a cobrança informada.")); } AssociadoContribuicao OAssociadoContribuicao = new AssociadoContribuicao(); this.verificarIsencao(ref OAssociadoContribuicao, Preco, OAssociado); OAssociadoContribuicao.idAssociado = OAssociado.id; OAssociadoContribuicao.idOrganizacao = OAssociado.idOrganizacao; OAssociadoContribuicao.idUnidade = OAssociado.idUnidade; OAssociadoContribuicao.idTipoAssociado = UtilNumber.toInt32(OAssociado.idTipoAssociado); OAssociadoContribuicao.idContribuicao = idContribuicao.toInt(); OAssociadoContribuicao.valorOriginal = UtilNumber.toDecimal(Preco.valorFinal); OAssociadoContribuicao.valorAtual = valorCustomizado > 0? valorCustomizado : OAssociadoContribuicao.valorOriginal; OAssociadoContribuicao.dtVencimentoOriginal = dtVencimento.Value; OAssociadoContribuicao.dtVencimentoAtual = dtNovoVencimento ?? OAssociadoContribuicao.dtVencimentoOriginal; OAssociadoContribuicao.idContribuicaoVencimento = Vencimento.id; OAssociadoContribuicao.dtInicioVigencia = Vencimento.dtInicioVigencia; OAssociadoContribuicao.dtFimVigencia = Vencimento.dtFimVigencia; return(this.gerarCobranca(OAssociadoContribuicao)); }