private string gerarLinhaExcel(AssociadoContribuicaoItemLista OContribuicao, List <AssociadoContribuicaoItemLista> lista) { StringBuilder linha = new StringBuilder(); linha.Append(OContribuicao.AssociadoContribuicao.id).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.idAssociado).Append(";"); linha.Append(OContribuicao.AssociadoExcel.nroAssociado).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.nomeAssociado).Append(";"); linha.Append(UtilString.formatCPFCNPJ(OContribuicao.AssociadoExcel.nroDocumentoAssociado)).Append(";"); linha.Append(OContribuicao.AssociadoExcel.statusAssociado == StatusConst.ativo ? "Ativo" : (OContribuicao.AssociadoExcel.statusAssociado == StatusConst.emAdmissao ? "Em Admissão" : "Desativado")).Append(";"); linha.Append(OContribuicao.AssociadoExcel.situacaoFinanceira == "AD" ? "Adimplente" : "Inadimplente").Append(";"); var qtdTel = lista.Max(x => x.listTelefones.Count); var qtdMail = lista.Max(x => x.listEmails.Count); var contTel = 0; foreach (var Telefone in OContribuicao.listTelefones) { contTel++; linha.Append(UtilString.formatPhone(Telefone.nroTelefone)).Append(";"); } for (int i = contTel; i < qtdTel; i++) { linha.Append("").Append(";"); } var contMail = 0; foreach (var Email in OContribuicao.listEmails) { contMail++; linha.Append(Email.email).Append(";"); } for (int i = contMail; i < qtdMail; i++) { linha.Append("").Append(";"); } linha.Append(OContribuicao.AssociadoContribuicao.descricaoContribuicao).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.descricaoPeriodoContribuicao).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.descricaoTipoAssociado).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.valorOriginal).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.valorAtual).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.dtVencimentoOriginal.exibirData()).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.dtVencimentoAtual.exibirData()).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.dtInicioVigencia.exibirData()).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.dtFimVigencia.exibirData()).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.dtPagamento.exibirData()).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.flagIsento == true ? "Sim" : "Não").Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.motivoIsencao).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.dtCadastro.exibirData()).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.nomeUsuarioCadastro).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.valorTotalTitulo).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.qtdeParcelas).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.valorTotalRecebido).Append(";"); linha.Append(OContribuicao.AssociadoContribuicao.flagDescontoAntecipacao == true ? "Sim" : "Não").Append(";"); return(linha.ToString()); }
/// <summary> /// Exibir detalhe HTML para item de cobrança de associado /// </summary> public static IHtmlString exibirDetalhes(this HtmlHelper helper, AssociadoContribuicaoItemLista OItem) { var htmlBuilder = new StringBuilder(); if (OItem.AssociadoContribuicao.id == 0) { return(new MvcHtmlString("<strong>Cobrança não realizada</strong>")); } if (OItem.AssociadoContribuicao.flagIsento == true) { return(new MvcHtmlString($"<strong>Isento</strong> <span class=\"fs-10 text-italic\">({(OItem.AssociadoContribuicao.motivoIsencao.isEmpty()? "Motivo não registrado": OItem.AssociadoContribuicao.motivoIsencao)})</span>")); } if (OItem.AssociadoContribuicao.dtPagamento.HasValue) { htmlBuilder.Append($"<strong>{OItem.valorAtualFinal.ToString("C")}</strong>"); htmlBuilder.Append($"<small class=\"text-italic fs-10\">Pago ({OItem.AssociadoContribuicao.dtPagamento.exibirData()})</small>"); return(new MvcHtmlString(htmlBuilder.ToString())); } htmlBuilder.Append($"<strong>{OItem.valorAtualFinal.ToString("C")} </strong>"); decimal valorPago = OItem.AssociadoContribuicao.valorTotalRecebido.GetValueOrDefault(); htmlBuilder.Append($"<small class=\"text-italic fs-10\">{(valorPago > 0? $" - {valorPago.ToString("C")} pago": "Em aberto")}</small>"); if (OItem.AssociadoContribuicao.flagTemParcelamento()) { decimal valorParcela = decimal.Divide(OItem.valorAtualFinal, new decimal(OItem.AssociadoContribuicao.qtdeParcelas.toInt())); htmlBuilder.Append($"<br /><strong>Parcelado {OItem.AssociadoContribuicao.qtdeParcelas}X {valorParcela.ToString("C")}</strong>"); } if (OItem.AssociadoContribuicao.flagDescontoAntecipacao == true) { UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext); htmlBuilder.Append($"<br/><a href=\"javascript:void(0)\" onclick=\"DescontoAntecipacao.exibirModalDesconto(this)\" data-url=\"{urlHelper.Action("modal-detalhe-descontos", "DescontoAntecipacao", new {area = "Financeiro", OItem.AssociadoContribuicao.idTituloReceita})}\" class=\"text-italic fs-10\">Desconto por antecipação</a>"); } return(new MvcHtmlString(htmlBuilder.ToString())); }
/// <summary> /// Gerar o menu de acoes para uma contribuica /// </summary> public static MvcHtmlString menuAcoes(this HtmlHelper helper, AssociadoContribuicaoItemLista Cobranca) { StringBuilder html = new StringBuilder(); html.AppendLine("<button class=\"btn btn-default btn-white-sm dropdown-toggle\" data-toggle=\"dropdown\"> Ações <span class=\"caret\"></span></button>"); html.AppendLine("<ul class=\"dropdown-menu dropdown-menu-right\">"); if (!Cobranca.AssociadoContribuicao.flagQuitado() && !Cobranca.AssociadoContribuicao.flagTemParcelamento()) { html.AppendLine($"<li>{ helper.linkRegistrarPagamentoTitulo(Cobranca.AssociadoContribuicao.idTituloReceita.toInt(), "Registrar pagamento") }</li>"); html.AppendLine($"<li>{ helper.linkParcelarTitulo(Cobranca.AssociadoContribuicao.idTituloReceita.toInt(), "Parcelar cobrança") }</li>"); } html.AppendLine($"<li>{helper.linkDetalheTitulo(Cobranca.AssociadoContribuicao.idTituloReceita.toInt(), "Detalhes Cobrança")}</li>"); if (Cobranca.AssociadoContribuicao.flagPodeIsentar()) { html.AppendLine($"<li>{ helper.linkConcederIsencao(Cobranca.AssociadoContribuicao.id, "Conceder isenção") }</li>"); } if (Cobranca.AssociadoContribuicao.dtPagamento.HasValue) { html.AppendLine($"<li>{ helper.linkRecibo(Cobranca.AssociadoContribuicao.id, "Recibo pagamento") }</li>"); } html.AppendLine("<li ole=\"separator\" class=\"divider\"></li>"); html.AppendLine($"<li>{ helper.linkExcluirContribuicao(Cobranca.AssociadoContribuicao.id, "Excluir cobrança") }</li>"); html.AppendLine("</ul>"); return(new MvcHtmlString(html.ToString())); }
/// <summary> /// Carregar os associados que devem/deveriam estar vinculados à contribuicao /// </summary> private void carregarAssociados(int[] idsAssociados) { var listaAssociadoContribuicao = new List <AssociadoContribuicao>(); var flagDataVariada = this.Contribuicao.flagVencimentoVariado(); var OTabelaPreco = this.Contribuicao.retornarTabelaVigente(); var listaPrecos = OTabelaPreco.listaPrecos.Where(x => x.flagExcluido == "N").ToList(); var idsTiposAssociado = listaPrecos.Where(x => x.TipoAssociado.idOrganizacao == Contribuicao.idOrganizacao).Select(x => x.idTipoAssociado).ToArray(); var idsAssociadosVinculados = listaContribuicoes.Select(x => x.idAssociado).Distinct().ToArray(); var baseQuery = this.OAssociadoBL.listar(0, String.Empty, String.Empty, "S") .Where(x => idsTiposAssociado.Contains(x.idTipoAssociado) || idsAssociadosVinculados.Contains(x.id)); if (ano > 0) { var dtCorteAno = new DateTime(ano, 12, 31); if (this.Contribuicao.idTipoVencimento == TipoVencimentoConst.FIXO_PELA_CONTRIBUICAO) { baseQuery = baseQuery.Where(x => x.dtAdmissao <= dtCorteAno || x.dtAdmissao == null || idsAssociadosVinculados.Contains(x.id)); } if (this.Contribuicao.idTipoVencimento == TipoVencimentoConst.VENCIMENTO_PELA_ADMISSAO_ASSOCIADO) { dtCorteAno = new DateTime(ano, mes, 1).AddMonths(1); baseQuery = baseQuery.Where(x => x.dtAdmissao <= dtCorteAno || idsAssociadosVinculados.Contains(x.id)); } if (this.Contribuicao.idTipoVencimento == TipoVencimentoConst.VENCIMENTO_PELO_ULTIMO_PAGAMENTO) { dtCorteAno = new DateTime(ano, mes, 1).AddMonths(1); listaAssociadoContribuicao = this.OAssociadoContribuicaoBL.listar(this.Contribuicao.id, 0, null, null) .Where(x => x.dtExclusao == null && (x.dtVencimentoAtual <= dtCorteAno || x.dtPagamento <= dtCorteAno) ).Select(x => new { x.id, x.idAssociado, x.idAssociadoContribuicaoPrincipal, x.dtPagamento, x.dtVencimentoOriginal, x.dtVencimentoAtual }) .ToListJsonObject <AssociadoContribuicao>(); var idsAssociadosContrubuicao = listaAssociadoContribuicao.Select(x => x.idAssociado).ToArray(); baseQuery = baseQuery.Where(x => idsAssociadosContrubuicao.Contains(x.id) || idsAssociadosVinculados.Contains(x.id)); } } //Se a contribuicao nao for anuidade, filtramos somente os associados nao vinculados que foram admitidos antes do vencimento atual if (dtVencimento != DateTime.MinValue && this.Contribuicao.PeriodoContribuicao.qtdeAnos == 0) { baseQuery = baseQuery.Where(x => x.dtAdmissao <= dtVencimento || (x.dtAdmissao == null && !flagDataVariada) || idsAssociadosVinculados.Contains(x.id)); } if (Contribuicao.flagGerarParaTodos != true) { } if (this.idsTipoAssociado.Count > 0) { baseQuery = baseQuery.Where(x => this.idsTipoAssociado.Contains(x.idTipoAssociado)); } if (!String.IsNullOrEmpty(this.ativo)) { baseQuery = baseQuery.Where(x => x.ativo == this.ativo); } var query = baseQuery.Select(x => new { idAssociado = x.id, x.idPessoa, nomeAssociado = x.Pessoa.nome, nroAssociado = x.nroAssociado, nroDocumentoAssociado = x.Pessoa.nroDocumento, statusAssociado = x.ativo, x.dtAdmissao, dtUltimaContribuicao = DateTime.Today, descricaoTipoAssociado = x.TipoAssociado.descricao, listEmails = x.Pessoa.listaEmails, listTelefones = x.Pessoa.listaTelefones }).AsQueryable(); if (idsAssociados != null && idsAssociados.Length > 0) { query = query.Where(x => idsAssociados.Contains(x.idAssociado)); } var listaDinamicaAssociados = query.ToList(); foreach (var Item in listaDinamicaAssociados) { var ItemLista = new AssociadoContribuicaoItemLista(); ItemLista.AssociadoContribuicao = new AssociadoContribuicaoResumoVW(); ItemLista.AssociadoContribuicao.idAssociado = Item.idAssociado; ItemLista.AssociadoContribuicao.idPessoa = Item.idPessoa; ItemLista.AssociadoContribuicao.nomeAssociado = Item.nomeAssociado; ItemLista.AssociadoContribuicao.descricaoTipoAssociado = Item.descricaoTipoAssociado; ItemLista.AssociadoContribuicao.dtVencimentoOriginal = dtVencimento; ItemLista.AssociadoExcel.nroAssociado = Item.nroAssociado; ItemLista.AssociadoExcel.nroDocumentoAssociado = Item.nroDocumentoAssociado; ItemLista.AssociadoExcel.statusAssociado = Item.statusAssociado; ItemLista.listEmails = Item.listEmails.Where(x => x.dtExclusao == null && !string.IsNullOrEmpty(x.email)).Take(2).ToList(); ItemLista.listTelefones = Item.listTelefones.Where(x => x.dtExclusao == null && !string.IsNullOrEmpty(x.nroTelefone)).Take(3).ToList(); if (this.Contribuicao.idTipoVencimento == TipoVencimentoConst.VENCIMENTO_PELA_ADMISSAO_ASSOCIADO) { ItemLista.AssociadoContribuicao.dtVencimentoOriginal = new DateTime(this.ano, UtilNumber.toInt32(Item.dtAdmissao?.Month), UtilNumber.toInt32(Item.dtAdmissao?.Day)); } if (this.Contribuicao.idTipoVencimento == TipoVencimentoConst.VENCIMENTO_PELO_ULTIMO_PAGAMENTO) { var dtUltimaContribuicao = listaAssociadoContribuicao.Where(i => i.idAssociado == Item.idAssociado).Select(i => (i.dtPagamento != null ? i.dtPagamento.Value : i.dtVencimentoAtual)).LastOrDefault(); ItemLista.AssociadoContribuicao.dtVencimentoOriginal = dtUltimaContribuicao != DateTime.MinValue ? new DateTime(this.ano, dtUltimaContribuicao.Month.toInt(), dtUltimaContribuicao.Day.toInt()) : DateTime.Today; } this.listaAssociados.Add(ItemLista); } }