コード例 #1
0
ファイル: FacadeContato.cs プロジェクト: ertprs/crm_fonte
        private void IntegraConnector(ref DynamicEntity entity, bool integra, char action = ' ')
        {
            if (integra)
            {
                entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_exporta_erp", "1");
            }
            else
            {
                entity.Properties.Remove("new_exporta_erp");
            }


            if (action == ' ' && integra)
            {
                switch (this.MessageName)
                {
                case Microsoft.Crm.Sdk.MessageName.Create:
                    action = 'C';
                    break;

                case Microsoft.Crm.Sdk.MessageName.Update:
                    action = 'W';
                    break;

                case Microsoft.Crm.Sdk.MessageName.Delete:
                    action = 'D';
                    break;
                }
            }

            this.contexto.SharedVariables.Properties.Add(new PropertyBagEntry("action", action));
        }
コード例 #2
0
        private DynamicEntity ValidaStatusDoDiagnostico(DynamicEntity entidade)
        {
            var quantidadeEhNulaOuZero = true;
            var geraTroca = true;

            if (entidade.Properties.Contains("new_qtd_solicitada"))
            {
                if ((entidade.Properties["new_qtd_solicitada"] as CrmNumber).Value != 0)
                {
                    quantidadeEhNulaOuZero = false;
                }
            }

            if (entidade.Properties.Contains("new_gera_troca"))
            {
                if ((entidade.Properties["new_gera_troca"] as CrmBoolean).Value == false)
                {
                    geraTroca = false;
                }
            }

            if (quantidadeEhNulaOuZero || !geraTroca)
            {
                entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "statuscode", new Status()
                {
                    Value = 4
                });
            }

            return(entidade);
        }
コード例 #3
0
        private void Create()
        {
            Cliente cliente = new FactoryCliente(this.OrganizacaoName, this.Id).Instanciar(this.Entidade);

            if (cliente.ExisteDuplicidade())
            {
                throw new ArgumentException("O cliente não pode ser criado, existe duplicidade no CPF/CNPJ ou Código do Cliente");
            }

            PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(this.Entidade, "new_sem_masc_cnpj_cpf", cliente.ObterCpfCnpjSemMascara());
        }
コード例 #4
0
ファイル: FacadeContato.cs プロジェクト: ertprs/crm_fonte
        public void PodeIntegrar(ref DynamicEntity entity)
        {
            if (!entity.Properties.Contains("parentcustomerid") &&
                !entity.Properties.Contains("firstname") &&
                !entity.Properties.Contains("emailaddress1"))
            {
                return;
            }

            entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_status_integracao", string.Empty);
            entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_mensagem", string.Empty);
            entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_chave_integracao", string.Empty);


            // var factory = new FactoryContato(this.Organizacao);
            // var contatoAtual = factory.CriarContato(PluginHelper.GetDynamicEntity(contexto));


            bool integra = this.contato.PodeIntegrarComERP();

            this.IntegraConnector(ref entity, integra);

            // Se o contato estiver integrado com ERP e após salvar não cair mais na regra, precisa excluir de lá.
            if (this.MessageName == Microsoft.Crm.Sdk.MessageName.Update && !integra)
            {
                if (this.PreImage == null)
                {
                    throw new ArgumentNullException("PreImage", "Não foi encontrado a preImage");
                }

                var factory       = new FactoryContato(this.Organizacao);
                var contatoAntigo = factory.CriarContato(this.PreImage);

                if (contatoAntigo.PodeIntegrarComERP())
                {
                    this.IntegraConnector(ref entity, true, 'D');
                }
            }
        }
コード例 #5
0
ファイル: PreManegerEvent.cs プロジェクト: ertprs/crm_fonte
        protected void ModeloEmailIsol(IPluginExecutionContext context)
        {
            if (entidade.Properties.Contains("regardingobjectid") ||
                entidade.Properties.Contains("description"))
            {
                Lookup        regardingobjectid = null;
                string        description       = string.Empty;
                DynamicEntity preImage          = GetPreImage(context);

                if (preImage != null)
                {
                    if (preImage.Properties.Contains("regardingobjectid"))
                    {
                        regardingobjectid = preImage.Properties["regardingobjectid"] as Lookup;
                    }

                    if (preImage.Properties.Contains("description"))
                    {
                        description = preImage.Properties["description"].ToString();
                    }
                }

                if (entidade.Properties.Contains("regardingobjectid"))
                {
                    regardingobjectid = entidade.Properties["regardingobjectid"] as Lookup;
                }

                if (entidade.Properties.Contains("description"))
                {
                    description = entidade.Properties["description"].ToString();
                }

                if (regardingobjectid != null)
                {
                    if (regardingobjectid.type == EntityName.incident.ToString())
                    {
                        if (description.Contains("{link_ocorrencia_isol}"))
                        {
                            string link = string.Format("<a href=\"{0}\">Clique Aqui</a>", CriarLink(regardingobjectid.Value, "LINK_ISOL_FECHAMENTO", context.OrganizationName));
                            description = description.Replace("{link_ocorrencia_isol}", link);
                        }

                        if (description.Contains("{link_ocorrencia_impressao}"))
                        {
                            string link = string.Format("<a href=\"{0}\">Clique Aqui</a>", CriarLink(regardingobjectid.Value, "LINK_ISOL_OS", context.OrganizationName));
                            description = description.Replace("{link_ocorrencia_impressao}", link);
                        }

                        if (description.Contains("{valor_linha_contrato}"))
                        {
                            var ocorrencia = new Ocorrencia()
                            {
                                Id = regardingobjectid.Value
                            };
                            var linhaDeContrato = DomainService.RepositoryLinhaDoContrato.ObterPor(ocorrencia, "new_valor_pago");

                            string valorPago = (linhaDeContrato != null && linhaDeContrato.PrecoPago.HasValue) ? linhaDeContrato.PrecoPago.Value.ToString("F") : "0,00";

                            description = description.Replace("{valor_linha_contrato}", valorPago);
                        }

                        entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "description", description);
                    }
                }
            }
        }
コード例 #6
0
        public void Execute(IPluginExecutionContext context)
        {
            DateTime inicioExecucao = DateTime.Now;

            try
            {
                var prop = context.InputParameters.Properties;
                if (prop.Contains("Target") && prop["Target"] is DynamicEntity)
                {
                    PluginHelper.LogEmArquivo(context, "INICIO;", inicioExecucao.ToString(), "");
                    var organizacao = new Organizacao(context.OrganizationName);
                    var entidade    = prop["Target"] as DynamicEntity;

                    FacadeOcorrencia facade = new FacadeOcorrencia(context);
                    facade.Atender();

                    #region inserir resultado do atendimento do contexto

                    #region reincidencia

                    if (facade.Ocorrencia.OcorrenciaPai != null)
                    {
                        if (facade.Ocorrencia.OcorrenciaPai.Id != Guid.Empty)
                        {
                            entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_reincidenteid", new Lookup("incident", facade.Ocorrencia.OcorrenciaPai.Id));
                        }

                        if (facade.Ocorrencia.OcorrenciaPai.DataDeCriacao != DateTime.MinValue)
                        {
                            context.SharedVariables.Properties.Add(
                                new PropertyBagEntry("dataCriacaoReincidente", facade.Ocorrencia.OcorrenciaPai.DataDeCriacao.ToString())
                                );
                        }
                    }

                    #endregion

                    #region SLA

                    var sla = new CrmDateTime()
                    {
                        IsNull = true, IsNullSpecified = true
                    };
                    if (facade.Ocorrencia.DataSLA.HasValue)
                    {
                        sla = new CrmDateTime(facade.Ocorrencia.DataSLA.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "followupby", sla);

                    var escalacao = new CrmDateTime()
                    {
                        IsNull = true, IsNullSpecified = true
                    };
                    if (facade.Ocorrencia.DataEscalacao.HasValue)
                    {
                        escalacao = new CrmDateTime(facade.Ocorrencia.DataEscalacao.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_data_hora_escalacao", escalacao);

                    #endregion

                    #region  árvore de assunto

                    if (facade.Ocorrencia.EstruturaDeAssunto != null)
                    {
                        foreach (Assunto item in facade.Ocorrencia.EstruturaDeAssunto)
                        {
                            if (item.TipoDeAssunto != TipoDeAssunto.Vazio)
                            {
                                entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, item.CampoRelacionadoNaOcorrencia, new Lookup("subject", item.Id));
                            }
                        }
                    }

                    #endregion

                    #region Valor do Serviço

                    if (facade.Ocorrencia.ValorServico.HasValue)
                    {
                        var ValorServicoCRM = new CrmMoney(facade.Ocorrencia.ValorServico.Value);
                        entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_valor_servico", ValorServicoCRM);
                    }

                    #endregion

                    #endregion
                    PluginHelper.LogEmArquivo(context, "FIM;", inicioExecucao.ToString(), DateTime.Now.ToString());
                }
            }
            catch (Exception ex)
            {
                PluginHelper.TratarExcecao(ex, TipoDeLog.PluginIncident);
                PluginHelper.LogEmArquivo(context, "ERRO;", inicioExecucao.ToString(), DateTime.Now.ToString());
            }
        }