예제 #1
0
        public void TestarTarefaVisitaComercial()
        {
            string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras");

            Domain.Servicos.TarefaService ServiceTarefas = new Domain.Servicos.TarefaService(organizationName, false);
            Domain.Model.Tarefa           Tarefa         = ServiceTarefas.BuscaTarefa(new Guid("BEC979ED-A74F-E411-93F5-00155D013E70"));

            if (Tarefa.ReferenteA.Type.Equals("account"))
            {
                Domain.Model.Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(organizationName, false).BuscaConta(Tarefa.ReferenteA.Id);
                if (canal == null || canal.Classificacao == null)
                {
                    throw new ArgumentException("Conta cadastrada no campo 'Referente a' não encontrada!");
                }

                Domain.Model.ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);
                Domain.Model.ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);

                List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(organizationName, false).ConverterParametroParaLista(paramGlobalListaAtividades.Valor);

                if (lstAtividades.Count > 0)
                {
                    string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto);

                    if (!string.IsNullOrEmpty(atividade))
                    {
                        Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(organizationName, false);

                        novaTarefa.Assunto = atividade;

                        Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(organizationName, false).BuscarTipoTarefa("Checklist");
                        if (tipoAtividade != null)
                        {
                            novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
                        }
                        novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor));

                        novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account");

                        novaTarefa.ID = new Domain.Servicos.TarefaService(organizationName, false).Persistir(novaTarefa);
                    }
                }
            }
        }
예제 #2
0
        public static void RelavidarUsuariosEquipe()
        {
            //string Org = "CRM2013D";
            string Org = "INTELBRASQA";
            List <Intelbras.CRM2013.Domain.Model.Conta> listContas = new Intelbras.CRM2013.Domain.Servicos.ContaService(Org, false).ListarTodasContas();

            if (listContas.Count > 0)
            {
                Console.WriteLine("Quantidade de Contas para processamento : " + listContas.Count.ToString());
            }
            else
            {
                Console.WriteLine("Não há conta para processamento.");
            }

            foreach (Intelbras.CRM2013.Domain.Model.Conta registroConta in listContas)
            {
                //Console.WriteLine("Verificando conta Guid : " + registroConta.ID.Value.ToString());
                if (registroConta.Proprietario.Type == "team")
                {
                    //verifica todos os usuários que estão na equipes.
                    List <Intelbras.CRM2013.Domain.Model.TeamMembership> membrosEquipe = new Intelbras.CRM2013.Domain.Servicos.EquipeService(Org, false).listarMembrosEquipe(registroConta.Proprietario.Id);
                    foreach (Intelbras.CRM2013.Domain.Model.TeamMembership membroEquipe in membrosEquipe)
                    {
                        //verifica se existe algum usuario na Equipe que não existe no registro
                        Intelbras.CRM2013.Domain.Model.RelacionamentoCanal Assistente = new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(Org, false).ListarPorAssistente((Guid)registroConta.ID, membroEquipe.Usuario);
                        Intelbras.CRM2013.Domain.Model.RelacionamentoCanal Supervisor = new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(Org, false).ListarPorSupervisor((Guid)registroConta.ID, membroEquipe.Usuario);

                        if (Assistente == null && Supervisor == null)
                        {
                            if (membroEquipe.Usuario != registroConta.CriadoPor.Id)
                            {
                                new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(Org, false).RemoverUserEquipe(registroConta.Proprietario.Id, membroEquipe.Usuario);
                            }

                            Console.WriteLine("Removendo membro da equipe conta :" + registroConta.ID.Value.ToString());
                        }
                    }
                }
            }
        }
예제 #3
0
        public void Execute(IServiceProvider serviceProvider)
        {
            lock (thisLock)
            {
                var                         context        = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                ITracingService             trace          = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService        service        = serviceFactory.CreateOrganizationService(null);

                TarefaService ServiceTarefas = new TarefaService(context.OrganizationName, context.IsExecutingOffline, service);
                CompromissosDoCanalService ServiceCompromissosDoCanal = new CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service);

                try
                {
                    trace.Trace(context.MessageName);

                    Intelbras.CRM2013.Domain.Model.Tarefa mTarefa = null;
                    switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                    {
                    case Domain.Enum.Plugin.MessageName.Create:
                        var entidade = (Entity)context.InputParameters["Target"];
                        mTarefa = ServiceTarefas.BuscaTarefa(entidade.Id);


                        new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).CriarParecerParaSolicitacao(mTarefa);
                        Guid tipoAtividadeExecucao;

                        if (!Guid.TryParse(SDKore.Configuration.ConfigurationManager.GetSettingValue("TipoAtividadeExecucao"), out tipoAtividadeExecucao))
                        {
                            throw new ArgumentException("(CRM) Faltando parâmetro TipoAtividadeExecucao no SDKore");
                        }

                        trace.Trace("Parâmetro do Config: TipoAtividadeExecucao '{0}'", tipoAtividadeExecucao);

                        if (mTarefa.ReferenteA != null && mTarefa.TipoDeAtividade != null && mTarefa.TipoDeAtividade.Id == tipoAtividadeExecucao)
                        {
                            trace.Trace("Tarefa do tipo Execução.");

                            SolicitacaoBeneficio solBenef = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor(mTarefa.ReferenteA.Id);

                            if (solBenef == null)
                            {
                                throw new ArgumentException("(CRM) Solicitação não encontrada.");
                            }

                            if (solBenef.TipoSolicitacao != null && solBenef.AjusteSaldo.Value)
                            {
                                trace.Trace("Solicitação do tipo Ajuste.");

                                Tarefa _mTarefa = new Intelbras.CRM2013.Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service);
                                _mTarefa.ID        = context.PrimaryEntityId;
                                _mTarefa.Resultado = (int)Domain.Enum.Tarefa.Resultado.PagamentoEfetuadoPedidoGerado;
                                _mTarefa.State     = 1;
                                string retorno;

                                TarefaService tarefaService = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service);
                                tarefaService.Persistir(_mTarefa, out retorno);

                                trace.Trace(tarefaService.Trace.StringTrace.ToString());
                                tarefaService.Trace.Save();
                            }
                        }

                        mTarefa.TempoAtuacao = 0;
                        break;

                    case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                        if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity)
                        {
                            Tarefa Tarefa = context.PostEntityImages["imagem"].Parse <Tarefa>(context.OrganizationName, context.IsExecutingOffline, service);

                            if (Tarefa.ReferenteA == null || Tarefa.State.Value != (int)Domain.Enum.Tarefa.StateCode.Fechada)
                            {
                                break;
                            }

                            if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower())
                            {
                                new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service)
                                .ConcluirTarefaSolicitacaoBeneficio(Tarefa, context.UserId);
                            }
                            else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoCadastro>().ToLower())
                            {
                                new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service)
                                .ConcluirTarefaSolicitacaoDeCadastro(Tarefa, context.UserId);
                            }
                            else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <CompromissosDoCanal>().ToLower())
                            {
                                new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service)
                                .ConcluirTarefaCompromissoCanal(Tarefa);
                            }
                            else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <Conta>().ToLower())
                            {
                                if (Tarefa.TipoDeAtividade.Name.Contains("Checklist"))
                                {
                                    #region Pendencia Key-Account comentada

                                    Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, service).BuscaConta(Tarefa.ReferenteA.Id);
                                    if (canal == null || canal.Classificacao == null)
                                    {
                                        throw new ArgumentException("(CRM) Conta cadastrada no campo 'Referente a' não encontrada!");
                                    }

                                    ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);
                                    ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);

                                    List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).ConverterParametroParaLista(paramGlobalListaAtividades.Valor);

                                    if (lstAtividades.Count > 0)
                                    {
                                        string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto);

                                        if (!string.IsNullOrEmpty(atividade))
                                        {
                                            Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service);

                                            Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).BuscarTipoTarefa("Checklist");
                                            if (tipoAtividade != null)
                                            {
                                                novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
                                            }

                                            novaTarefa.Assunto    = atividade;
                                            novaTarefa.Conclusao  = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor));
                                            novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account");

                                            novaTarefa.ID = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).Persistir(novaTarefa);
                                            if (novaTarefa.ID.HasValue)
                                            {
                                                Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("task", "activityid", Tarefa.Id);
                                                if (proprietario != null)
                                                {
                                                    new Domain.Servicos.UtilService(context.OrganizationName, context.IsExecutingOffline, service).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", novaTarefa.ID.Value);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        Domain.Model.CompromissosDoCanal CompromissoCanal = ServiceCompromissosDoCanal.BuscarPorGuid(Tarefa.ReferenteA.Id);

                                        if (CompromissoCanal != null && CompromissoCanal.Compromisso != null)
                                        {
                                            List <string> listaAtividadesCheckup2 = ServiceTarefas.ListarAtividadesCheckup(CompromissoCanal.Compromisso.Id);

                                            if (listaAtividadesCheckup2.Count > 0)
                                            {
                                                string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(listaAtividadesCheckup2, Tarefa.Assunto);

                                                if (!string.IsNullOrEmpty(atividade))
                                                {
                                                    Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("itbc_compdocanal", "itbc_compdocanalid", CompromissoCanal.Id);
                                                    if (proprietario != null)
                                                    {
                                                        new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service).GerarAtividadeChecklist(atividade, CompromissoCanal, proprietario);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    #endregion
                                }
                            }
                        }
                        break;
                    }
                }
                catch (Exception ex)
                {
                    string message = SDKore.Helper.Error.Handler(ex);

                    trace.Trace(SDKore.Helper.Error.GetMessageError(ex));
                    throw new InvalidPluginExecutionException(message, ex);
                }
            }
        }
예제 #4
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
            case Domain.Enum.Plugin.MessageName.Create:

                var entidade             = (Entity)context.InputParameters["Target"];
                Domain.Model.Conta Conta = entidade.Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline);

                #region Sharepoint

                if (Conta != null && !string.IsNullOrEmpty(Conta.RazaoSocial))
                {
                    new SharepointServices(context.OrganizationName, context.IsExecutingOffline, adminService).CriarDiretorio <Domain.Model.Conta>(Conta.RazaoSocial, Conta.ID.Value);
                }

                var enderecoService = new EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService);
                enderecoService.AtualizaEnderecosAdicionaisDaConta(Conta);

                #endregion


                break;

            case Domain.Enum.Plugin.MessageName.Update:
                var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService);
                var CanalPre          = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);
                var CanalPost         = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);

                if (CanalPost.Classificacao != null && CanalPost.Classificacao.Id == SDKore.Configuration.ConfigurationManager.GetSettingValue <Guid>("Intelbras.Classificacao.Revenda"))
                {
                    if ((!CanalPre.ParticipantePrograma.HasValue || CanalPre.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) && CanalPost.ParticipantePrograma.HasValue && CanalPost.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim)
                    {
                        var entityTarget = (Entity)context.InputParameters["Target"];
                        var contaService = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService);
                        CanalPost.IntegrarNoPlugin = false;
                        AdesaoRevenda(CanalPost, repositoryService);
                    }
                }

                //Adesão ao programa
                if (CanalPre.ParticipantePrograma != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim &&
                    CanalPost.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim)
                {
                    new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).AdesaoAoPrograma(CanalPost);
                    var integraPontua  = (new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).validaIntegraPontuaFielo(CanalPre, CanalPost));
                    var contatos       = repositoryService.Contato.ListarAssociadosA(CanalPost.ID.ToString());
                    var contatoService = new Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline, adminService);
                    foreach (var contato in contatos)
                    {
                        contato.IntegraIntelbrasPontua = true;
                        contatoService.Persistir(contato);
                    }
                }

                //Envia contatos para Fielo na troca de categoria da revenda
                if (CanalPre.Categoria != CanalPost.Categoria && CanalPost.Categoria.Name != "Registrada")
                {
                    var contatos       = repositoryService.Contato.ListarAssociadosA(CanalPost.ID.ToString());
                    var contatoService = new Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline, adminService);
                    foreach (var contato in contatos)
                    {
                        contato.IntegraIntelbrasPontua = true;
                        contatoService.Persistir(contato);
                    }
                }


                //Descredenciamento ao programa
                if (CanalPre.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim &&
                    (CanalPost.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Nao ||
                     CanalPost.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Descredenciado))
                {
                    new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).DescredenciamentoAoPrograma(CanalPost);
                }

                //Envia Verba para Fielo
                if (CanalPost.StatusEnvioVMC == (int)Domain.Enum.Conta.StatusEnvioVMC.Enviando)
                {
                    string retorno      = new Domain.Servicos.VerbaVmcService(context.OrganizationName, context.IsExecutingOffline, adminService).EnviaVerbaFielo(CanalPost, CanalPost.CpfCnpj);
                    var    contaService = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService);

                    Conta CanalUpdate = new Conta(context.OrganizationName, context.IsExecutingOffline);
                    CanalUpdate.ID = CanalPost.ID;

                    if (!retorno.Contains("false"))
                    {
                        CanalUpdate.StatusEnvioVMC     = (int)Domain.Enum.Conta.StatusEnvioVMC.Enviado;
                        CanalUpdate.DataUltimoEnvioVMC = DateTime.Now.AddHours(3);
                        CanalUpdate.TemDrireitoVMC     = false;
                        CanalUpdate.IntegrarNoPlugin   = true;
                        contaService.Persistir(CanalUpdate);
                    }
                    else
                    {
                        CanalUpdate.StatusEnvioVMC   = (int)Domain.Enum.Conta.StatusEnvioVMC.ErroAoEnviar;
                        CanalUpdate.TemDrireitoVMC   = false;
                        CanalUpdate.IntegrarNoPlugin = true;
                        contaService.Persistir(CanalUpdate);
                    }
                }
                break;
            }
        }
예제 #5
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var contaService = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService);

            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
                #region Create
            case Domain.Enum.Plugin.MessageName.Create:

                var e     = (Entity)context.InputParameters["Target"];
                var conta = e.Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);
                if (e.Contains("itbc_cpfoucnpj") && conta.CpfCnpj != null)
                {
                    if (contaService.BuscaContaPorCpfCnpj(conta.CpfCnpj, conta.TipoConstituicao.Value) != null)
                    {
                        throw new ArgumentException("(CRM) Ja Existe uma Conta com esse mesmo CPF/CNPJ.");
                    }
                    if (conta.TipoConstituicao != (int)Domain.Enum.Conta.TipoConstituicao.Estrangeiro)
                    {
                        e.Attributes["new_sem_masc_cnpj_cpf"] = conta.CpfCnpj.GetOnlyNumbers();
                        e.Attributes["itbc_cpfoucnpj"]        = conta.CpfCnpj.InputMask();
                    }
                }
                else
                {
                    throw new ArgumentException("(CRM) Campo CPF ou CNPJ não esta preenchido.");
                }

                PreenchimentoDeCampos(ref context, adminService);

                if (conta.AssistenciaTecnica == null)
                {
                    e.Attributes["itbc_isastec"] = false;
                }

                //Atualiza endereço Padrão
                if (conta.EnderecoPadrao == "e")
                {
                    e.Attributes["new_altera_endereco_padrao"] = "n";
                }

                break;
                #endregion

                #region Update

            case Domain.Enum.Plugin.MessageName.Update:
                PreenchimentoDeCampos(ref context, adminService);
                var entityTarget      = (Entity)context.InputParameters["Target"];
                var entityPre         = context.PreEntityImages["imagem"];
                var entityMerge       = context.GetContextEntityMerge("imagem");
                var canalMerge        = ((Entity)entityMerge).Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);
                var canalPre          = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).ObterCanalPorId(canalMerge.ID.Value);
                var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService);
                var contaUp           = entityTarget.Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService);

                if (entityTarget.Contains("itbc_cpfoucnpj") && (canalPre.CpfCnpj.GetOnlyNumbers() != canalMerge.CpfCnpj.GetOnlyNumbers() || canalMerge.TipoConstituicao == (int)Domain.Enum.Conta.TipoConstituicao.Estrangeiro))
                {
                    if (contaService.BuscaOutraContaPorCpfCnpj(contaUp.CpfCnpj, contaUp.ID.Value, canalMerge.TipoConstituicao.Value) != null)
                    {
                        throw new ArgumentException("(CRM) Ja Existe uma Conta com esse mesmo CPF/CNPJ.");
                    }
                    entityTarget.Attributes["new_sem_masc_cnpj_cpf"] = contaUp.CpfCnpj.GetOnlyNumbers();
                }

                foreach (var item in entityTarget.Attributes)
                {
                    entityMerge.Attributes[item.Key] = item.Value;
                }

                if (canalMerge.AssistenciaTecnica == null)
                {
                    entityTarget.Attributes["itbc_isastec"] = false;
                }

                //Atualiza endereço Padrão
                if (canalMerge.EnderecoPadrao == "e")
                {
                    new Intelbras.CRM2013.Domain.Servicos.EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService).AtualizaEnderecosAdicionaisDaConta(canalMerge);
                    entityTarget.Attributes["new_altera_endereco_padrao"] = "n";
                }

                //Atualizando informações de endereço
                entityTarget.Attributes["address1_line1"]  = canalMerge.Endereco1Rua;
                entityTarget.Attributes["address1_city"]   = canalMerge.Endereco1Cidade;
                entityTarget.Attributes["address2_city"]   = canalMerge.Endereco1Cidade;
                entityTarget.Attributes["address1_county"] = canalMerge.Endereco1Bairro;
                entityTarget.Attributes["address2_county"] = canalMerge.Endereco2Bairro;

                entityTarget.Attributes["address1_stateorprovince"] = canalMerge.Endereco1Estado;
                entityTarget.Attributes["new_sem_masc_cnpj_cpf"]    = canalMerge.CpfCnpj.GetOnlyNumbers();

                if (canalMerge.Classificacao != null && canalMerge.Classificacao.Id == SDKore.Configuration.ConfigurationManager.GetSettingValue <Guid>("Intelbras.Classificacao.Revenda"))
                {
                    if ((!canalPre.ParticipantePrograma.HasValue || canalPre.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) && canalMerge.ParticipantePrograma.HasValue && canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim)
                    {
                        canalMerge.IntegrarNoPlugin = true;
                    }
                }

                //Valida Credenciamento
                if (canalMerge.Classificacao != null && canalMerge.Classificacao.Id != SDKore.Configuration.ConfigurationManager.GetSettingValue <Guid>("Intelbras.Classificacao.Revenda"))
                {
                    if (canalPre.ParticipantePrograma.HasValue &&
                        canalMerge.ParticipantePrograma.HasValue &&
                        canalPre.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim &&
                        canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim)
                    {
                        new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).validaAdesaoaoPrograma(canalMerge);
                        entityTarget.Attributes["itbc_integraintelbraspontua"] = true;
                        canalMerge.IntegraIntelbrasPontua = true;
                    }
                }

                //Envia conta para Fielo
                var IntegraPontua = (new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).validaIntegraPontuaFielo(canalPre, canalMerge));
                entityTarget.Attributes["itbc_integraintelbraspontua"] = IntegraPontua;
                canalMerge.IntegraIntelbrasPontua = IntegraPontua;

                // Valida Descredenciamento ao programa
                if (canalPre.ParticipantePrograma.HasValue &&
                    canalMerge.ParticipantePrograma.HasValue &&
                    canalPre.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim &&
                    (canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Nao ||
                     canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Descredenciado))
                {
                    // Se usuário tentando descredenciar.
                    if (context.Depth == 1)
                    {
                        new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).ValidarDescredenciamentoAoPrograma(canalMerge);
                        entityTarget.Attributes["itbc_integraintelbraspontua"] = true;
                        canalMerge.IntegraIntelbrasPontua = true;
                    }
                }

                //Envia Verba para Fielo
                if (canalMerge.StatusEnvioVMC == (int)Domain.Enum.Conta.StatusEnvioVMC.AguardandoEnvio)
                {
                    entityTarget.Attributes["itbc_statusenviovmc"] = (int)Domain.Enum.Conta.StatusEnvioVMC.Enviando;
                    canalMerge.IntegrarNoPlugin = true;
                }

                if (!canalMerge.IntegrarNoPlugin || canalMerge.IntegrarNoPlugin == null || canalMerge.IntegrarNoPlugin.ToString().Equals(""))
                {
                    contaService.IntegracaoBarramento(canalMerge, ref entityTarget);
                }

                break;

                #endregion
            }
        }