Ejemplo n.º 1
0
        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
                }
            }
        }
Ejemplo n.º 2
0
        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());
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }