protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { var ServiceBeneficioDoCanal = new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline); Domain.Model.ProdutoEstabelecimento prodEstabAtual = new Domain.Model.ProdutoEstabelecimento(context.OrganizationName, context.IsExecutingOffline); if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: #region var ent = (Entity)context.InputParameters["Target"]; Domain.Model.CategoriasCanal CatCanal = ent.Parse <Domain.Model.CategoriasCanal>(context.OrganizationName, context.IsExecutingOffline); ServiceBeneficioDoCanal.VerificaDuplicidadeCategoria(CatCanal.Canal.Id, CatCanal.UnidadeNegocios.Id); ServiceBeneficioDoCanal.VerificaConfiguracaoPerfilCategoria(CatCanal.Classificacao.Id, CatCanal.UnidadeNegocios.Id, CatCanal.Categoria.Id, CatCanal.Canal.Id); // Insere o mesmo proprietário da Conta. // Comentado devido problema com plugin do CRM2015 - não é possível alterar o OwnerId neste ponto - deixei comentado por enquanto // var canalServices = new CategoriaCanalService(context.OrganizationName, context.IsExecutingOffline); // ent = canalServices.AtribuiParaOProprietarioDoCanal(ent, CatCanal); break; #endregion case Domain.Enum.Plugin.MessageName.Update: #region if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var categoriasCanalPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.CategoriasCanal>(context.OrganizationName, context.IsExecutingOffline); var Entidade = (Entity)context.InputParameters["Target"]; Domain.Model.CategoriasCanal categoriasCanal = Entidade.Parse <Domain.Model.CategoriasCanal>(context.OrganizationName, context.IsExecutingOffline); if (categoriasCanal.UnidadeNegocios != null) { categoriasCanalPre.UnidadeNegocios = new SDKore.DomainModel.Lookup(categoriasCanal.UnidadeNegocios.Id, ""); } if (categoriasCanal.Canal != null) { categoriasCanalPre.Canal = new SDKore.DomainModel.Lookup(categoriasCanal.Canal.Id, ""); } if (categoriasCanal.Categoria != null) { categoriasCanalPre.Categoria = new SDKore.DomainModel.Lookup(categoriasCanal.Categoria.Id, ""); } if (categoriasCanal.Classificacao != null) { categoriasCanalPre.Classificacao = new SDKore.DomainModel.Lookup(categoriasCanal.Classificacao.Id, ""); } if (categoriasCanalPre.UnidadeNegocios != null && categoriasCanal.UnidadeNegocios != null && categoriasCanalPre.Canal != null && categoriasCanal.Canal != null) { if (categoriasCanalPre.UnidadeNegocios.Id != categoriasCanal.UnidadeNegocios.Id || categoriasCanalPre.Canal.Id != categoriasCanal.Canal.Id) { ServiceBeneficioDoCanal.VerificaDuplicidadeCategoria(categoriasCanalPre.Canal.Id, categoriasCanalPre.UnidadeNegocios.Id); } } if (categoriasCanal.Canal == null) { categoriasCanal.Canal = categoriasCanalPre.Canal; } // Ativando Categoria do Canal if (categoriasCanal.Status.HasValue && (categoriasCanalPre.Status == (int)Domain.Enum.CategoriaCanal.StateCode.Desativado && categoriasCanal.Status.Value == (int)Domain.Enum.CategoriaCanal.StateCode.Ativado)) { ServiceBeneficioDoCanal.VerificaConfiguracaoPerfilCategoria(categoriasCanalPre.Classificacao.Id, categoriasCanalPre.UnidadeNegocios.Id, categoriasCanalPre.Categoria.Id, categoriasCanal.Canal.Id); } } break; #endregion } } }
static int Main(string[] args) { try { var f = CriaArquivoStatus(); if (f == null) { Console.WriteLine("Já existe um processo em andamento."); return(0); } string organizationName = SDKore.Configuration.ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); if (args != null && args.Length > 0) { organizationName = args[0].ToString(); } var logger = new SDKore.Helper.Logger("PCI-Log de Revalidação da Adesão", false); logger.Log("Inicio do processo.", true, true); var parametroGlobalService = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false); var parametroGLobal = parametroGlobalService.ObterEmailContatosAdministrativos(); if (parametroGLobal == null || !parametroGLobal.ID.HasValue || parametroGLobal.ID.Value == Guid.Empty || string.IsNullOrEmpty(parametroGLobal.Valor)) { logger.Log("Erro: (CRM) Parametro Global Contatos Administrativos não configurado.", true, true); logger.Log("Fim do processo.", true, true); File.Delete(statusFileName); return(6666); } logger.Log("Obtendo contas participantes do programa de benefícios.", true, true); var beneficioDoCanalService = new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(organizationName, false); var lstMatrizParticipante = beneficioDoCanalService.ListarContasParticipantes(); logger.Log(lstMatrizParticipante.Count.ToString() + " contas participantes do programa de benefícios.", true, true); int count = 0; foreach (var matriz in lstMatrizParticipante) { count++; logger.Log(string.Format("{0} - {1} - {2}", count, matriz.RazaoSocial, matriz.CpfCnpj), true, true); try { AtualizaStatus(f, dataInicio, count, lstMatrizParticipante.Count); beneficioDoCanalService.AdesaoAoPrograma(matriz); } catch (Exception ex) { logger.Log(string.Format("\nErro: {0}\n Stack: {1}\n", ex.Message, ex.StackTrace), true, true); } } f.Flush(); f.Close(); File.Delete(statusFileName); logger.Log("Fim do processo.", true, true); EnviaEmail(organizationName, parametroGLobal.Valor, logger.FileName); return(0); } catch (Exception ex) { string mensagem = SDKore.Helper.Error.Handler(ex); Console.WriteLine(mensagem); return(ex.GetHashCode()); } }
public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem); var xml = this.CarregarMensagem <Pollux.MSG0159>(mensagem); try { foreach (var itemBeneficioCanal in xml.BeneficioCanalItens) { try { if (String.IsNullOrEmpty(itemBeneficioCanal.CodigoBeneficioCanal)) { listaErros.Add(itemBeneficioCanal.CodigoBeneficioCanal + " - Parâmetro obrigatório[CódigoBenefícioCanal] para a consulta não enviado"); continue; } Guid benefCanalGuid; if (!Guid.TryParse(itemBeneficioCanal.CodigoBeneficioCanal, out benefCanalGuid)) { listaErros.Add(itemBeneficioCanal.CodigoBeneficioCanal + " - Guid Benefício Canal em formato inválido."); continue; } //Pegamos o benefCanal com base no Guid BeneficioDoCanal benefCanal = new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).ObterPor(benefCanalGuid); if (benefCanal == null) { listaErros.Add(itemBeneficioCanal.CodigoBeneficioCanal + " - Valor do parâmetro [BeneficioCanal] não existe. Não encontrado na base CRM."); continue; } benefCanal.VerbaPeriodoAtual = decimal.Round(itemBeneficioCanal.VerbaCalculada.Value, 4); benefCanal.VerbaPeriodosAnteriores = decimal.Round(itemBeneficioCanal.VerbaPeriodoAnterior.Value, 4); benefCanal.VerbaBrutaPeriodoAtual = decimal.Round(itemBeneficioCanal.VerbaTotal.Value, 4); benefCanal.TotalSolicitacoesAprovadasNaoPagas = decimal.Round(itemBeneficioCanal.VerbaEmpenhada.Value, 4); benefCanal.VerbaReembolsada = decimal.Round(itemBeneficioCanal.VerbaReembolsada.Value, 4); benefCanal.VerbaCancelada = decimal.Round(itemBeneficioCanal.VerbaCancelada.Value, 4); benefCanal.VerbaAjustada = decimal.Round(itemBeneficioCanal.VerbaAjustada.Value, 4); benefCanal.VerbaDisponivel = decimal.Round(itemBeneficioCanal.VerbaDisponivel.Value, 4); new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).AlterarBeneficioCanal(benefCanal); } catch (Exception e) { listaErros.Add(String.IsNullOrEmpty(itemBeneficioCanal.CodigoBeneficioCanal) ? itemBeneficioCanal.CodigoBeneficioCanal + " - " : "Erro sem Guid informado - " + SDKore.Helper.Error.Handler(e)); } } if (listaErros.Count() == 0) { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso."; } else { resultadoPersistencia.Sucesso = false; StringBuilder sb = new StringBuilder(); sb.Append("Erros apresentados nesta requisição: "); foreach (var mensagemErro in listaErros) { sb.AppendLine(mensagemErro + ";"); } resultadoPersistencia.Mensagem = sb.ToString(); } retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0159R1>(numeroMensagem, retorno)); } catch (Exception e) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0159R1>(numeroMensagem, retorno)); } }