Пример #1
0
        public void VerificaVinculoProdutoVsProdutoPortifolioAlteracao(ProdutoPortfolio ProdPortfolio, ProdutoPortfolio ProdPortfolioPre)
        {
            if (ProdPortfolio.StateCode.HasValue)
            {
                if (ProdPortfolio.StateCode.Value == (int)Domain.Enum.ProdutoPortfolio.StateCode.Inativo)
                {
                    return;
                }
            }

            if (ProdPortfolioPre.Produto == null)
            {
                throw new ArgumentException("(CRM) Erro de dados: O campo Produto obrigatório não preenchido em Portifolio do produto");
            }

            if (ProdPortfolioPre.Portfolio == null)
            {
                throw new ArgumentException("(CRM) Erro de dados: O campo Portfolio obrigatório não preenchido em Portifolio do produto");
            }

            if (ProdPortfolio.Produto == null)
            {
                ProdPortfolio.Produto = new Lookup(ProdPortfolioPre.Produto.Id, ProdPortfolioPre.Produto.Type);
            }

            if (ProdPortfolio.Portfolio == null)
            {
                ProdPortfolio.Portfolio = new Lookup(ProdPortfolioPre.Portfolio.Id, ProdPortfolioPre.Portfolio.Type);
            }

            Domain.Model.Portfolio portfolio = RepositoryService.Portfolio.Retrieve(ProdPortfolio.Portfolio.Id);
            Domain.Model.Product   produto   = RepositoryService.Produto.Retrieve(ProdPortfolio.Produto.Id);

            if (portfolio == null)
            {
                throw new ArgumentException("(CRM) Portfólio não encontrado");
            }

            if (produto == null)
            {
                throw new ArgumentException("(CRM) Produto não encontrado");
            }

            if (portfolio.Tipo == (int)Domain.Enum.Portfolio.Tipo.Solucao)
            {
                if (portfolio.UnidadeNegocio.Id == produto.UnidadeNegocio.Id)
                {
                    throw new ArgumentException("(CRM) Para portfólios do tipo Solução a únidade de negócios do produto não pode ser igual a do portfólio.");
                }
            }
            else
            {
                if (portfolio.UnidadeNegocio.Id != produto.UnidadeNegocio.Id)
                {
                    throw new ArgumentException("(CRM) O Produto e o Portfolio não estão na mesma Unidade de Negócio.");
                }
            }
        }
Пример #2
0
        public void Execute(IServiceProvider serviceProvider)
        {
            var                         context        = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            ITracingService             trace          = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));



            Entity Entidade = (Entity)context.InputParameters["Target"];

            Domain.Model.Portfolio portfolio = Entidade.Parse <Domain.Model.Portfolio>(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:

                    new Intelbras.CRM2013.Domain.Servicos.PortfolioService(context.OrganizationName, context.IsExecutingOffline).VerificaDuplicidadeClassificadores(portfolio);
                    break;

                case Domain.Enum.Plugin.MessageName.Update:

                    if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                    {
                        var portfolioPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Portfolio>(context.OrganizationName, context.IsExecutingOffline);

                        if (portfolio.Tipo.HasValue == false)
                        {
                            portfolio.Tipo = portfolioPre.Tipo;
                        }

                        if (portfolio.UnidadeNegocio == null)
                        {
                            portfolio.UnidadeNegocio = new SDKore.DomainModel.Lookup(portfolioPre.UnidadeNegocio.Id, SDKore.Crm.Util.Utility.GetEntityName <Intelbras.CRM2013.Domain.Model.UnidadeNegocio>());
                        }


                        if (portfolio.Classificacao == null)
                        {
                            portfolio.Classificacao = new SDKore.DomainModel.Lookup(portfolioPre.Classificacao.Id, SDKore.Crm.Util.Utility.GetEntityName <Intelbras.CRM2013.Domain.Model.Classificacao>());
                        }
                    }

                    new Intelbras.CRM2013.Domain.Servicos.PortfolioService(context.OrganizationName, context.IsExecutingOffline).VerificaDuplicidadeClassificadores(portfolio);

                    break;
                }
            }
        }