private void AtualizaValores(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, ref SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) { decimal?valorAbater = ServiceSolicitacaoBeneficio.ObterValorAbater(solicitacaoBeneficio); if (valorAbater.HasValue) { e.Attributes["itbc_valoraabater"] = new Money(valorAbater.Value); solicitacaoBeneficio.ValorAbater = valorAbater; } var retornoValores = ServiceSolicitacaoBeneficio.RecalculaValoresNaAlteracaoDeStatus(solicitacaoBeneficio, solicitacaoBeneficio); if (retornoValores.ValorAprovado.HasValue) { e.Attributes["itbc_valoraprovado"] = new Money(retornoValores.ValorAprovado.Value); solicitacaoBeneficio.ValorAprovado = retornoValores.ValorAprovado; } }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { SolicitacaoBeneficioService ServiceSolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, adminService); switch (EnumConverter <MessageName>(context.MessageName.ToLower())) { #region Create case MessageName.Create: var e = context.GetContextEntity(); var solicitacaoBeneficioTargetCreate = e.Parse <SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline); ValidaValorAcao(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate); AtualizaDataLimiteAposCriacao(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioTargetCreate, ref e); AtualizaInformacoesPortfolio(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e); AtualizaCodicaoPagamento(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e); AtualizaDataValidade(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e); //AtualizaSituacaoInrregular(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e); AtualizaTrimestreCompetencia(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e); AtualizaValores(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioTargetCreate, ref e); ValidaValorAprovado(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate); AtualizaNome(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioTargetCreate, ref e); break; #endregion #region Update case MessageName.Update: var entityMerge = context.PreEntityImages["imagem"]; var entityTargetUpdate = (Entity)context.InputParameters["Target"]; var solicitacaoPreUpdate = entityMerge.Parse <SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService); foreach (var item in context.GetContextEntity().Attributes) { entityMerge.Attributes[item.Key] = item.Value; } var solicitacaoBeneficioMergeUpdate = entityMerge.Parse <SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService); ValidaTrocaStatus(solicitacaoBeneficioMergeUpdate, solicitacaoPreUpdate); ValidaValorAcao(ServiceSolicitacaoBeneficio, solicitacaoBeneficioMergeUpdate); ServiceSolicitacaoBeneficio.ValidaDataParametrizadaParaConclusao(solicitacaoBeneficioMergeUpdate); #region SOLICITAÇÃO DE BENEFICIO if (solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.Criada || solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.EmAnalise || solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.Aprovada || solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.PagamentoPendente || solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.ComprovantesValidacao || solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.ComprovacaoConcluida) { var tempSolicBen = ServiceSolicitacaoBeneficio.RecalculaValoresNaAlteracaoDeStatus(solicitacaoBeneficioMergeUpdate, solicitacaoPreUpdate); if (tempSolicBen.ValorPago.HasValue) { entityTargetUpdate.Attributes["itbc_valorpago"] = new Money(tempSolicBen.ValorPago.Value); solicitacaoBeneficioMergeUpdate.ValorPago = tempSolicBen.ValorPago; } if (tempSolicBen.ValorSolicitado.HasValue) { entityTargetUpdate.Attributes["itbc_valorsolicitado"] = new Money(tempSolicBen.ValorSolicitado.Value); solicitacaoBeneficioMergeUpdate.ValorSolicitado = tempSolicBen.ValorSolicitado; } if (tempSolicBen.ValorAbater.HasValue) { entityTargetUpdate.Attributes["itbc_valoraabater"] = new Money(tempSolicBen.ValorAbater.Value); solicitacaoBeneficioMergeUpdate.ValorAbater = tempSolicBen.ValorAbater; } if (tempSolicBen.ValorAprovado.HasValue) { entityTargetUpdate.Attributes["itbc_valoraprovado"] = new Money(tempSolicBen.ValorAprovado.Value); solicitacaoBeneficioMergeUpdate.ValorAprovado = tempSolicBen.ValorAprovado; } } #endregion ValidaValorAprovado(ServiceSolicitacaoBeneficio, solicitacaoBeneficioMergeUpdate); AtualizaNome(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioMergeUpdate, ref entityTargetUpdate); break; #endregion #region SetStateDynamicEntity case MessageName.SetStateDynamicEntity: if (!context.InputParameters.Contains("EntityMoniker") || !(context.InputParameters["EntityMoniker"] is EntityReference)) { throw new ArgumentException("(CRM) SetStateDynamicEntity não contém EntityMoniker."); } EntityReference eSolicitacao = (EntityReference)context.InputParameters["EntityMoniker"]; OptionSetValue state = (OptionSetValue)context.InputParameters["State"]; OptionSetValue status = (OptionSetValue)context.InputParameters["Status"]; if (eSolicitacao.Id != Guid.Empty && state.Value == (int)Domain.Enum.SolicitacaoBeneficio.State.Inativo) { throw new ArgumentException("(CRM) Não é possível inativar uma solicitação!"); } break; #endregion } }