Ejemplo n.º 1
0
        public void ConcluirTarefaCompromissoCanal(Tarefa tarefa)
        {
            if (tarefa.Resultado.HasValue)
            {
                var compromissoDoCanal  = RepositoryService.CompromissosDoCanal.Retrieve(tarefa.ReferenteA.Id);
                var compromissoPrograma = RepositoryService.CompromissosPrograma.Retrieve(compromissoDoCanal.CompromissosDoPrograma.ID.Value, "itbc_codigo", "itbc_tipodemonitoramento");

                if (!compromissoPrograma.TipoMonitoramento.HasValue || compromissoPrograma.TipoMonitoramento.Value != (int)Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas)
                {
                    return;
                }

                if (tarefa.Resultado.Value == (int)Enum.Tarefa.Resultado.Reprovada)
                {
                    var statusCompromissoNaoCumprido = RepositoryService.StatusCompromissos.ObterPor(Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido);

                    RepositoryService.CompromissosDoCanal.Update(new CompromissosDoCanal(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline)
                    {
                        ID = compromissoDoCanal.ID,
                        StatusCompromisso = new Lookup(statusCompromissoNaoCumprido.ID.Value, SDKore.Crm.Util.Utility.GetEntityName(statusCompromissoNaoCumprido), statusCompromissoNaoCumprido.Nome)
                    });
                }
                else if (tarefa.Resultado.Value == (int)Enum.Tarefa.Resultado.Aprovada)
                {
                    int ordem = (tarefa.Ordem.HasValue) ? tarefa.Ordem.Value : 1;
                    var statusCompromissoCumprido = RepositoryService.StatusCompromissos.ObterPor(Enum.CompromissoCanal.StatusCompromisso.Cumprido);

                    var      compromissoCanalService  = new CompromissosDoCanalService(RepositoryService);
                    DateTime?validadeCompromissoCanal = compromissoCanalService.ObterValidade(compromissoDoCanal);

                    var compromissoCanalUpdate = new CompromissosDoCanal(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline)
                    {
                        ID                = compromissoDoCanal.ID,
                        Validade          = validadeCompromissoCanal,
                        StatusCompromisso = new Lookup(statusCompromissoCumprido.ID.Value, statusCompromissoCumprido.Nome, SDKore.Crm.Util.Utility.GetEntityName(statusCompromissoCumprido))
                    };

                    RepositoryService.CompromissosDoCanal.Update(compromissoCanalUpdate);

                    if (compromissoPrograma.Codigo.Value == (int)Enum.CompromissoPrograma.Codigo.Showroom)
                    {
                        ParametroGlobal parametroQuantidadeKitsShowroom = RepositoryService.ParametroGlobal.ObterPor((int)Enum.TipoParametroGlobal.QuantidadeKitsShowroomPorSegmento, compromissoDoCanal.UnidadeDeNegocio.Id, null, null, null, compromissoDoCanal.Compromisso.Id, null, null);
                        if (parametroQuantidadeKitsShowroom == null)
                        {
                            throw new ArgumentException("(CRM) Parâmetro Global Quantidade de Evidências Show Room não encontrado para o Compromisso Envio de evidências de Showroom e Unidade de Negócio [" + compromissoDoCanal.UnidadeDeNegocio.Name + "].");
                        }

                        if (parametroQuantidadeKitsShowroom.GetValue <int>() <= ordem)
                        {
                            return;
                        }
                    }

                    CriarTarefaParaChecklistCompromissoCanal(ordem + 1, compromissoDoCanal);
                }
            }
        }
Ejemplo n.º 2
0
        public void CriarTarefaParaChecklistCompromissoCanal(int ordem, CompromissosDoCanal compromissoDoCanal)
        {
            ParametroGlobal parametroFrequenciaChecklist = RepositoryService.ParametroGlobal
                                                           .ObterPor((int)Enum.TipoParametroGlobal.FrequenciaChecklist, compromissoDoCanal.UnidadeDeNegocio.Id, null, null, null, compromissoDoCanal.Compromisso.Id, null, null);

            if (parametroFrequenciaChecklist == null)
            {
                throw new ArgumentException("(CRM) Parâmetro Global Frequencia de Checklist não encontrado para o Compromisso Envio de evidências de Showroom e Unidade de Negócio [" + compromissoDoCanal.UnidadeDeNegocio.Name + "].");
            }

            var compromissoPrograma = new CompromissosDoPrograma(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline)
            {
                ID   = compromissoDoCanal.CompromissosDoPrograma.ID,
                Nome = compromissoDoCanal.CompromissosDoPrograma.Nome
            };

            TarefaService ServiceTarefas           = new TarefaService(RepositoryService);
            string        tituloAtividadeChecklist = ServiceTarefas.ObterProximaAtividadeCheckup(ordem + 1, compromissoPrograma);


            Tarefa task = new Tarefa(RepositoryService);

            task.ReferenteA = new Lookup(compromissoDoCanal.ID.Value, SDKore.Crm.Util.Utility.GetEntityName(compromissoDoCanal));
            task.Assunto    = tituloAtividadeChecklist;
            task.Ordem      = ordem;
            task.Conclusao  = DateTime.Now.AddDays(parametroFrequenciaChecklist.GetValue <int>());

            var tipoTarefa = new TarefaService(RepositoryService).BuscarTipoTarefa("Checklist");

            if (tipoTarefa != null)
            {
                task.TipoDeAtividade = new Lookup(tipoTarefa.ID.Value, SDKore.Crm.Util.Utility.GetEntityName(tipoTarefa));
            }

            Guid idTarefa = RepositoryService.Tarefa.Create(task);

            if (idTarefa != Guid.Empty)
            {
                Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).BuscarProprietario("itbc_compdocanal", "itbc_compdocanalid", compromissoDoCanal.Id);
                if (proprietario != null)
                {
                    new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", idTarefa);
                }
            }
        }
Ejemplo n.º 3
0
        public void EnvioDeEvidenciaShowRoom(Tarefa Task)
        {
            SolicitacaoBeneficio solBen = RepositoryService.SolicitacaoBeneficio.Retrieve(Task.ReferenteA.Id);

            CompromissosDoCanal compromissoCanal = RepositoryService.CompromissosDoCanal.ObterPorNome(Enum.CompromissoCanal.Compromisso.EnvioShowroom.ToString(), solBen.Canal.Id, solBen.UnidadedeNegocio.Id);

            if (compromissoCanal != null)
            {
                if (compromissoCanal.Compromisso.Name == Enum.CompromissoCanal.Compromisso.EnvioShowroom)
                {
                    if (!Task.ReferenteA.Type.ToLower().Equals(SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower()))
                    {
                        return;
                    }

                    compromissoCanal.StatusCompromisso = new Lookup(RepositoryService.StatusCompromissos.ObterPor(Domain.Enum.CompromissoCanal.StatusCompromisso.Cumprido).ID.Value, "");
                    RepositoryService.CompromissosDoCanal.Update(compromissoCanal);

                    SolicitacaoBeneficio mSolicitacaoBeneficio = RepositoryService.SolicitacaoBeneficio.Retrieve(Task.ReferenteA.Id);

                    if (mSolicitacaoBeneficio == null)
                    {
                        throw new ArgumentException("Solicitação de benefício no campo 'Referente a' não encontrada ou Desativada.");
                    }

                    ParametroGlobal parametroAtividadeQtdeEvidencia = RepositoryService.ParametroGlobal.ObterPor((int)Enum.TipoParametroGlobal.QuatidadeEvidenciaShowRoom, mSolicitacaoBeneficio.UnidadedeNegocio.Id, null, null, null, compromissoCanal.Compromisso.Id, null, null);
                    if (parametroAtividadeQtdeEvidencia == null)
                    {
                        throw new ArgumentException("(CRM)  Parâmetro Global Quantidade de Evidências Show Room não encontrado para o Compromisso Envio de evidências de Showroom e Unidade de Negócio [" + mSolicitacaoBeneficio.UnidadedeNegocio.Name + "].");
                    }

                    ParametroGlobal parametroAtividadeChacklist = RepositoryService.ParametroGlobal.ObterPor((int)Enum.TipoParametroGlobal.AtividadesChecklist, mSolicitacaoBeneficio.UnidadedeNegocio.Id, null, null, null, compromissoCanal.Compromisso.Id, null, null);
                    if (parametroAtividadeChacklist == null)
                    {
                        throw new ArgumentException("(CRM) Parâmetro Global Atividade de Checklist não encontrado para o Compromisso Envio de evidências de Showroom e Unidade de Negócio [" + mSolicitacaoBeneficio.UnidadedeNegocio.Name + "].");
                    }

                    ParametroGlobal parametroFrequenciaChecklist = RepositoryService.ParametroGlobal.ObterPor((int)Enum.TipoParametroGlobal.FrequenciaChecklist, mSolicitacaoBeneficio.UnidadedeNegocio.Id, null, null, null, compromissoCanal.Compromisso.Id, null, null);
                    if (parametroFrequenciaChecklist == null)
                    {
                        throw new ArgumentException("(CRM) Parâmetro Global Frequencia de Checklist não encontrado para o Compromisso Envio de evidências de Showroom e Unidade de Negócio [" + mSolicitacaoBeneficio.UnidadedeNegocio.Name + "].");
                    }

                    Tarefa task = new Tarefa(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline);

                    task.ReferenteA = new Lookup(compromissoCanal.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <CompromissosDoPrograma>());
                    task.Assunto    = parametroAtividadeChacklist.GetValue <string>();
                    task.Ordem      = Task.Ordem + 1;
                    task.Conclusao  = DateTime.Now.AddDays(parametroFrequenciaChecklist.GetValue <int>());

                    var tipoTarefa = new TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).BuscarTipoTarefa("Checklist");

                    if (tipoTarefa != null)
                    {
                        task.TipoDeAtividade = new Lookup(tipoTarefa.ID.Value, SDKore.Crm.Util.Utility.GetEntityName(tipoTarefa));
                    }

                    Conta canal = RepositoryService.Conta.Retrieve(mSolicitacaoBeneficio.Canal.Id, "ownerid");

                    Guid idTarefa = RepositoryService.Tarefa.Create(task);
                    if (idTarefa != Guid.Empty)
                    {
                        if (canal != null)
                        {
                            Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).BuscarProprietario("account", "accountid", canal.Id);

                            if (proprietario != null)
                            {
                                new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", idTarefa);
                            }
                        }
                    }
                }
            }
        }