/* * Removido do código. Essa verificação será feita futuramente * private void AtualizaSituacaoInrregular(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) * { * bool situacaoInregular = ServiceSolicitacaoBeneficio.TemSituacaoInregularVMC(solicitacaoBeneficio); * e["itbc_solicitacao_irregularidades"] = situacaoInregular; * * * if (situacaoInregular) * { * e["itbc_situacao_irregular"] = "Solicitação de VMC acima do percentual determinado pela Intelbras."; * } * * } */ private void AtualizaTrimestreCompetencia(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) { if (!e.Contains("itbc_trimestrecompetencia")) { e.Attributes["itbc_trimestrecompetencia"] = ServiceSolicitacaoBeneficio.ObterTrimestreCompetencia(); } }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { var ServiceProdutosSolicitacao = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, userService); switch (EnumConverter <MessageName>(context.MessageName.ToLower())) { case MessageName.Create: case MessageName.Update: var targetCreate = (Entity)context.InputParameters["Target"]; var produtosdaSolicitacaoCreate = targetCreate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, userService); ServiceProdutosSolicitacao.AtualizarValoresSolicitacao(produtosdaSolicitacaoCreate); break; case MessageName.Delete: var preImageDelete = context.PreEntityImages["imagem"]; var produtoSolicitacaoDelete = preImageDelete.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, adminService); var SolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, userService).ObterPor(produtoSolicitacaoDelete.SolicitacaoBeneficio.Id); var ServiceSolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, userService); ServiceSolicitacaoBeneficio.Atualizar(SolicitacaoBeneficio); break; } }
private void AtualizaDataLimiteAposCriacao(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, ref SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) { bool criadaNoPrazo = ServiceSolicitacaoBeneficio.CriadaAposDataLimite(solicitacaoBeneficio); e.Attributes["itbc_criada_apos_data_limite"] = criadaNoPrazo; solicitacaoBeneficio.CriadaAposDataLimite = criadaNoPrazo; }
private void AtualizaInformacoesPortfolio(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) { var portfolioRepresentante = ServiceSolicitacaoBeneficio.ObterPortfolioRepresentante(solicitacaoBeneficio); if (portfolioRepresentante != null) { e.Attributes["itbc_assistadmvendasid"] = new EntityReference() { Id = portfolioRepresentante.AssistentedeAdministracaodeVendas.Id, LogicalName = SDKore.Crm.Util.Utility.GetEntityName <Usuario>(), Name = portfolioRepresentante.AssistentedeAdministracaodeVendas.Name }; e.Attributes["itbc_supervisorid"] = new EntityReference() { Id = portfolioRepresentante.SupervisordeVendas.Id, LogicalName = SDKore.Crm.Util.Utility.GetEntityName <Usuario>(), Name = portfolioRepresentante.SupervisordeVendas.Name }; e.Attributes["itbc_karepresentanteresponsvel"] = new EntityReference() { Id = portfolioRepresentante.KeyAccountRepresentante.Id, LogicalName = SDKore.Crm.Util.Utility.GetEntityName <Contato>(), Name = portfolioRepresentante.KeyAccountRepresentante.Name }; } }
private void AtualizaDataValidade(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) { DateTime dataValidade = ServiceSolicitacaoBeneficio.ObterDataValidadeCriacao(solicitacaoBeneficio); if (dataValidade != DateTime.MinValue) { e.Attributes["itbc_datavalidade"] = dataValidade; } }
private void AtualizaNome(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, ref SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) { if (!e.Attributes.Contains("itbc_name") || solicitacaoBeneficio.TipoPriceProtection.HasValue) { string nome = ServiceSolicitacaoBeneficio.ObterNome(solicitacaoBeneficio); e.Attributes["itbc_name"] = nome; solicitacaoBeneficio.Nome = nome; } }
private void AtualizaCodicaoPagamento(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, SolicitacaoBeneficio solicitacaoBeneficio, ref Entity e) { if (e.Attributes.Contains("itbc_formapagamentoid")) { var condicaoPagamento = ServiceSolicitacaoBeneficio.ObterCondicaoDePagamento(solicitacaoBeneficio); if (condicaoPagamento != null) { e.Attributes["itbc_condicaopagamentoid"] = new EntityReference() { Id = condicaoPagamento.ID.Value, LogicalName = SDKore.Crm.Util.Utility.GetEntityName(condicaoPagamento), Name = condicaoPagamento.Nome }; } } }
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) { switch (EnumConverter <MessageName>(context.MessageName.ToLower())) { #region Create case MessageName.Create: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { var e = (Entity)context.InputParameters["Target"]; var SolBenef = e.Parse <Domain.Model.SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline); var ServiceSolicitacaoBeneficioCreate = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, userService); ServiceSolicitacaoBeneficioCreate.SolicitarBaneficioPostCreate(SolBenef); ServiceSolicitacaoBeneficioCreate.GerarTarefaSolicBeneficio(SolBenef, context.UserId, 1); } break; #endregion #region Update case MessageName.Update: var posImage = context.PostEntityImages["imagem"]; var posSolicitacaoBeneficio = posImage.Parse <Domain.Model.SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService); var preImage = context.PreEntityImages["imagem"]; var preSolicitacaoBeneficio = preImage.Parse <Domain.Model.SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService); var ServiceSolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, userService); ServiceSolicitacaoBeneficio.SolicitarBeneficioPostUpdate(posSolicitacaoBeneficio, preSolicitacaoBeneficio); break; #endregion } }
static int Main(string[] args) { try { Console.WriteLine("{0} - Iniciando monitoramento", DateTime.Now); if (args == null || args.Length == 0) { throw new ArgumentException("(CRM) Nenhum parametro foi enviado para executar o monitoramento!"); } switch (args[0].ToUpper()) { case "MONITORAMENTO": Execucao service = new Execucao(); service.ExecutaTodosMonitoramento(); break; case "CANCELAMENTO_SOLICITACAO_BENEFICIO": SolicitacaoBeneficioService solicitacaoBeneficioService = new SolicitacaoBeneficioService(OrganizationName, IsOffline); solicitacaoBeneficioService.ServicoDiarioSolicitacaoDeBeneficio(); break; } Console.WriteLine("{0} - Finalizando monitoramento", DateTime.Now); return(0); } catch (Exception ex) { string message = SDKore.Helper.Error.Handler(ex); Console.WriteLine("{0} - Finalizando monitoramento [Apresentou erro]", DateTime.Now); Console.WriteLine(message); //Environment.Exit(ex.GetHashCode()); return(ex.GetHashCode()); } }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { #region Create case Domain.Enum.Plugin.MessageName.Create: var entidade = (Entity)context.InputParameters["Target"]; var solicitacaoBeneficio = entidade.Parse <Domain.Model.SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline); new SharepointServices(context.OrganizationName, context.IsExecutingOffline, adminService) .CriarDiretorio <Domain.Model.SolicitacaoBeneficio>(solicitacaoBeneficio.Nome, solicitacaoBeneficio.ID.Value); break; #endregion #region Update case Domain.Enum.Plugin.MessageName.Update: if (context.Depth > 1) { return; } if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var ServiceSolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, adminService); var entityMerge = context.PostEntityImages["imagem"]; var solicMerge = entityMerge.Parse <Domain.Model.SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService); ServiceSolicitacaoBeneficio.CriarSolicitacaoComProdutosCancelados(solicMerge); if (solicMerge.TipoPriceProtection.HasValue && solicMerge.TipoPriceProtection == (int)Domain.Enum.SolicitacaoBeneficio.TipoPriceProtection.Autorizacao) { if (solicMerge.StatusCalculoPriceProtection.HasValue && solicMerge.StatusCalculoPriceProtection == (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calcular) { // Instanciando objetos utilizados para buscas var ServiceProdSolicitacao = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, adminService); var ServiceProd = new ProdutoService(context.OrganizationName, context.IsExecutingOffline, adminService); var ServiceSellout = new SellOutService(context.OrganizationName, context.IsExecutingOffline); var ServiceFatura = new FaturaService(context.OrganizationName, context.IsExecutingOffline); var ServiceConta = new ContaService(context.OrganizationName, context.IsExecutingOffline); var ServiceUnidade = new UnidadeNegocioService(context.OrganizationName, context.IsExecutingOffline); var ServiceFamilia = new FamiliaComercialService(context.OrganizationName, context.IsExecutingOffline); var ServiceEstabelecimento = new EstabelecimentoService(context.OrganizationName, context.IsExecutingOffline); var ServiceArquivo = new ArquivoService(context.OrganizationName, context.IsExecutingOffline); //trocar status para calculando solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calculando; ServiceSolicitacaoBeneficio.Persistir(solicMerge); // Obtendo dados para busca de quantidade de itens vendidos no Sellout var lstProdSolic = ServiceProdSolicitacao.ListarPorSolicitacaoAtivos(solicMerge.ID.Value); if (lstProdSolic.Count > 0) { var lstTmpFilter = lstProdSolic.Select(c => (Guid)c.Produto.Id).ToList(); var lstObjProd = ServiceProd.ListarProduto(lstTmpFilter); var listFilterSelloutWS = lstObjProd.Select(c => c.Codigo).ToList(); var listFilterFatura = lstObjProd.Select(c => c.ID).ToList(); var strListFilter = String.Join("','", listFilterSelloutWS); DateTime dataIni = (DateTime)solicMerge.DataCriacao; dataIni = dataIni.AddMonths(-1); DateTime dataFim = new DateTime(dataIni.Year, dataIni.Month, DateTime.DaysInMonth(dataIni.Year, dataIni.Month), 23, 59, 59); dataIni = dataIni.AddMonths(-2); dataIni = new DateTime(dataIni.Year, dataIni.Month, 1, 0, 0, 0); //Lista de total de unidades reportadas pelo sellout nos ultimos 90 dias, divididos por 2, para os produtos solicitados. var listValueSellout = ServiceSellout.listarContagemVenda(dataIni, dataFim, solicMerge.Canal.Id, strListFilter); //TODO - Determinar data referencia dos 6 meses para as faturas var listProdFaturas = ServiceFatura.listarContagemVendaPrice(solicMerge.Canal.Id, listFilterFatura, lstObjProd); //Ajuste de valor de quantidade foreach (var ajusteValuesTmp in listValueSellout) { var prodTmp = lstObjProd.Find(x => x.Codigo == ajusteValuesTmp.CodigoProdutoERP); if (prodTmp != null) { var prodSolicTmp = lstProdSolic.Find(x => x.Produto.Id == prodTmp.ID); if (prodSolicTmp != null) { if (prodSolicTmp.QuantidadeAjustada.HasValue) { ajusteValuesTmp.TotalUnidades = (decimal)prodSolicTmp.QuantidadeAjustada; } else { if (ajusteValuesTmp.TotalUnidades > prodSolicTmp.QuantidadeSolicitada) { ajusteValuesTmp.TotalUnidades = (decimal)prodSolicTmp.QuantidadeSolicitada; } } } } } //Busca de preços atuais var listPrecoProduto = new List <PrecoProduto>(); foreach (var objSolicProd in lstProdSolic) { PrecoProduto precoProduto = new PrecoProduto(context.OrganizationName, context.IsExecutingOffline); Product objProd = lstObjProd.Find(x => x.ID == objSolicProd.Produto.Id); precoProduto.CodigoProduto = objProd.Codigo; precoProduto.ProdutoId = objProd.ID.Value; precoProduto.Produto = objProd; var contaObjTmp = ServiceConta.BuscaConta(solicMerge.Canal.Id); List <ProdutoPortfolio> lstProdutoPortifolio = ServiceProd.ProdutosPortfolio(contaObjTmp, contaObjTmp.Classificacao.Id, solicMerge.UnidadedeNegocio.Id); ProdutoPortfolio produtoPortfolioTmp = lstProdutoPortifolio.Find(x => x.Produto.Id == objProd.ID.Value); Estabelecimento estTmp = ServiceEstabelecimento.BuscaEstabelecimento(objSolicProd.Estabelecimento.Id); precoProduto.codEstabelecimento = (int)estTmp.Codigo; var unidadeTmp = ServiceUnidade.BuscaUnidadeNegocio(solicMerge.UnidadedeNegocio.Id); precoProduto.codUnidade = unidadeTmp.ChaveIntegracao; var famComTmp = ServiceFamilia.ObterPor(objProd.FamiliaComercial.Id); precoProduto.codFamiliaComl = famComTmp.Codigo; precoProduto.tipoPortofolio = produtoPortfolioTmp.PortfolioTipo; precoProduto.ContaId = solicMerge.Canal.Id; precoProduto.ValorProduto = 0; precoProduto.Quantidade = (int)objSolicProd.QuantidadeSolicitada; listPrecoProduto.Add(precoProduto); } listPrecoProduto = ServiceProd.ListarPor(listPrecoProduto); MSG0138 msg0138 = new MSG0138(context.OrganizationName, context.IsExecutingOffline); List <ValorProdutoICMSViewModel> lstPrecoProdICMS = msg0138.Enviar(lstObjProd, lstProdSolic, listPrecoProduto, solicMerge); List <ProdutoFaturaViewModel> lstProdFatGenerate = new List <ProdutoFaturaViewModel>(); List <string> errorNoSellout = new List <string>(); foreach (var objProdSolic in lstProdSolic) { Product objProd = lstObjProd.Find(x => x.ID == objProdSolic.Produto.Id); QtdProdutoSellout objQtdSellout = listValueSellout.Find(x => x.CodigoProdutoERP == objProd.Codigo); if (objQtdSellout == null || objQtdSellout.TotalUnidades <= 0) { string strError = "Produto: " + objProd.Codigo + " " + objProd.Nome + " | Nenhuma entrada de sellout para o produto"; errorNoSellout.Add(strError); } } string urlSharepoint = string.Empty; var retUrlSharepoint = ServiceArquivo.ObterUrlArquivo(solicMerge.ID.ToString(), context.OrganizationName, out urlSharepoint); if (errorNoSellout.Count == 0) { foreach (var objProdSolic in lstProdSolic) { Product objProd = lstObjProd.Find(x => x.ID == objProdSolic.Produto.Id); QtdProdutoSellout objQtdSellout = listValueSellout.Find(x => x.CodigoProdutoERP == objProd.Codigo); objProdSolic.QuantidadeAprovada = 0; objProdSolic.ValorTotalAprovado = 0; objProdSolic.ValorTotal = 0; PrecoProduto objPrecoProd = listPrecoProduto.Find(x => x.Produto.ID == objProdSolic.Produto.Id); ValorProdutoICMSViewModel objValProdICMS = lstPrecoProdICMS.Find(x => x.CodigoProduto == objProd.Codigo); var lstProdFatLocal = listProdFaturas.Where(x => x.CodigoProduto == objProd.Codigo).OrderByDescending(x => x.DataEmissaoFatura).ToList(); foreach (var objProdFaturas in lstProdFatLocal) { if (objQtdSellout.TotalUnidades == 0) { objProdFaturas.QtdCalculo = 0; } else if (objProdFaturas.QtdFatura >= objQtdSellout.TotalUnidades) { objProdFaturas.QtdCalculo = objQtdSellout.TotalUnidades; } else { objProdFaturas.QtdCalculo = objProdFaturas.QtdFatura; } objProdFaturas.SaldoDiferenca = objProdFaturas.PrecoFatura - objValProdICMS.PrecoLiquido; if (objProdFaturas.SaldoDiferenca > 0) { objProdFaturas.ValorIPIProduto = objProd.PercentualIPI; objProdFaturas.PrecoCalculoAtual = objValProdICMS.PrecoLiquido; objProdFaturas.TotalDiferenca = objProdFaturas.SaldoDiferenca * objProdFaturas.QtdCalculo; objProdFaturas.TotalComIPI = objProdFaturas.TotalDiferenca + (objProdFaturas.TotalDiferenca * (objProd.PercentualIPI / 100)); objProdSolic.QuantidadeAprovada += objProdFaturas.QtdCalculo; if (objProdFaturas.QtdFatura >= objQtdSellout.TotalUnidades) { objQtdSellout.TotalUnidades = 0; } else { objQtdSellout.TotalUnidades -= objProdFaturas.QtdFatura; } if (objProdSolic.ValorTotalAprovado.HasValue) { objProdSolic.ValorTotalAprovado += objProdFaturas.TotalComIPI; } else { objProdSolic.ValorTotalAprovado = objProdFaturas.TotalComIPI; } if (objProdSolic.ValorTotal.HasValue) { objProdSolic.ValorTotal += objProdFaturas.TotalComIPI; } else { objProdSolic.ValorTotal = objProdFaturas.TotalComIPI; } } else if (objProdFaturas.SaldoDiferenca <= 0) { objProdFaturas.ValorIPIProduto = objProd.PercentualIPI; objProdFaturas.PrecoCalculoAtual = objValProdICMS.PrecoLiquido; } lstProdFatGenerate.Add(objProdFaturas); } if (objProdSolic.QuantidadeAprovada > 0 && objProdSolic.ValorTotalAprovado > 0) { var dateTime = DateTime.Now; ServiceArquivo.CriarExcelRecalculo(lstProdFatGenerate, dateTime.ToString("dd/MM/yyyy"), urlSharepoint, NameFileTable, context.OrganizationName, context.IsExecutingOffline); ServiceProdSolicitacao.Persistir(objProdSolic); } else if (lstProdFatLocal.Count > 0 && objProdSolic.ValorTotalAprovado <= 0) { string strError = "Produto: " + objProd.Codigo + " " + objProd.Nome + " | Nenhuma entrada nas Faturas do Canal com diferença positiva de preço para o Produto"; errorNoSellout.Add(strError); } else { string strError = "Produto: " + objProd.Codigo + " " + objProd.Nome + " | Nenhuma entrada nas Faturas do Canal para o Produto"; errorNoSellout.Add(strError); } } if (errorNoSellout.Count == 0) { solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calculado; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } else { ServiceArquivo.CriarArquivosErros(errorNoSellout, urlSharepoint, NameFileLog); solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.ErroCalcular; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } } else { ServiceArquivo.CriarArquivosErros(errorNoSellout, urlSharepoint, NameFileLog); solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.ErroCalcular; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } } else { solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calculado; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } } } } break; #endregion } }
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 } }
private void ValidaValorAprovado(SolicitacaoBeneficioService ServiceSolicitacaoBeneficio, SolicitacaoBeneficio solicitacaoBeneficio) { ServiceSolicitacaoBeneficio.ValidaValorAprovado(solicitacaoBeneficio); }