Example #1
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            usuarioIntegracao = usuario;
            var xml = this.CarregarMensagem <Pollux.MSG0101>(mensagem);

            var lstPrecoProduto = this.DefinirPropriedadesLista(xml);

            if (!resultadoPersistencia.Sucesso)
            {
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0101R1>(numeroMensagem, retorno));
            }

            List <PrecoProduto> lstPrecoProdutoRetorno = new Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarPor(lstPrecoProduto);

            if (lstPrecoProdutoRetorno == null || lstPrecoProdutoRetorno.Count == 0)
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Preço(s) não encontrado(s).";
                return(CriarMensagemRetorno <Pollux.MSG0101R1>(numeroMensagem, retorno));
            }


            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração Ocorrida com sucesso.";
            retorno.Add("ProdutosItens", this.GerarListaProdutoValorItem(lstPrecoProdutoRetorno));
            retorno.Add("Resultado", resultadoPersistencia);

            return(CriarMensagemRetorno <Pollux.MSG0101R1>(numeroMensagem, retorno));
        }
Example #2
0
        public void TestesProdutosPortfolio()
        {
            JavaScriptSerializer        jsonConverter = new JavaScriptSerializer();
            Dictionary <string, object> dictResposta  = new Dictionary <string, object>();
            Dictionary <string, object> listResposta  = new Dictionary <string, object>();
            string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras");

            Domain.Servicos.ProdutoService prodServ = new Domain.Servicos.ProdutoService(organizationName, false);

            string canalGuid = "9484CD60-D400-E411-9420-00155D013D39";

            try
            {
                Guid canal = Guid.Parse(canalGuid);
                Domain.Model.Conta contaCliente = new Domain.Servicos.ContaService(organizationName, false).BuscaConta(canal);
                if (contaCliente == null)
                {
                    throw new ArgumentException("Canal não encontrado");
                }

                List <Domain.Model.ProdutoPortfolio> prodPortfolio = prodServ.ProdutosPortfolio(contaCliente, null, null);

                if (prodPortfolio.Count <= 0)
                {
                    throw new ArgumentException("Canal não possui produtos cadastrados no portfólio");
                }

                foreach (var item in prodPortfolio)
                {
                    counter++;
                    if (item.Product != null && item.Product.Showroom != null && item.Product.Showroom == true)
                    {
                        if (!string.IsNullOrEmpty(item.Product.Nome) && item.Product.ID != null)
                        {
                            if (!listResposta.ContainsKey(item.Product.ID.ToString()))
                            {
                                listResposta.Add(item.Product.ID.ToString(), item.Product.Nome.ToString());
                            }
                        }
                    }
                }
                dictResposta.Add("Produtos", listResposta);
                dictResposta.Add("Sucesso", true);
            }
            catch (FormatException)
            {
                dictResposta.Add("Sucesso", false);
                dictResposta.Add("Mensagem", "Guid em formato incorreto!Esperado : (xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx)");
            }
            catch (Exception e)
            {
                dictResposta.Add("Sucesso", false);
                dictResposta.Add("Mensagem", e.Message);
            }
            string retorno = jsonConverter.Serialize(dictResposta);
        }
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            if (context.Depth > 2)
            {
                return;
            }

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

                Entity entidadeAlterada      = (Entity)context.InputParameters["Target"];
                Domain.Model.Product produto = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                //Inserir produto na lista de preço
                new Intelbras.CRM2013.Domain.Servicos.ListaPrecoService(context.OrganizationName, context.IsExecutingOffline).Persistir(produto);

                #region SellOut


                //Verifica se o codigo do produto foi alterado
                if (produto.Codigo != null)
                {
                    string resposta;

                    XDocument xmlroot = new XDocument(
                        new XDeclaration("1.0", "utf-8", "no"),
                        new XElement("Produto",
                                     new XElement("Idprodutocrm", produto.ID),
                                     new XElement("Idprodutoerp", produto.Codigo),
                                     new XElement("Statuscode", 1),
                                     new XElement("Statecode", 0)
                                     ));

                    string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                    string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                    string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                    bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                        context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                    if (resultado == false)
                    {
                        throw new ArgumentException(resposta);
                    }
                }
                #endregion


                break;

            case Domain.Enum.Plugin.MessageName.Update:
                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    Entity entidadeAlterada1         = (Entity)context.InputParameters["Target"];
                    Entity entidadePost              = (Entity)context.PostEntityImages["imagem"];
                    Domain.Model.Product produto1    = entidadeAlterada1.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);
                    Domain.Model.Product PostProduto = entidadePost.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                    if (produto1.Status.HasValue &&
                        produto1.Status == (int?)Domain.Enum.Produto.StateCode.inativo &&
                        produto1.RazaoStatus != null && (int)produto1.RazaoStatus == (int)Domain.Enum.Produto.StatusCode.Descontinuado)
                    {
                        new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, serviceFactory).DescontinuarProduto(PostProduto);
                    }

                    if (produto1.IntegrarNoPlugin.HasValue && !produto1.IntegrarNoPlugin.Value)
                    {
                        string ret = new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, serviceFactory).IntegracaoBarramento(PostProduto);
                    }

                    #region SellOut

                    //Verifica se o codigo do produto foi alterado
                    if (produto1.Codigo != null || produto1.RazaoStatus.HasValue)
                    {
                        string resposta;

                        XDocument xmlroot = new XDocument(
                            new XDeclaration("1.0", "utf-8", "no"),
                            new XElement("Produto",
                                         new XElement("Idprodutocrm", PostProduto.ID),
                                         new XElement("Idprodutoerp", PostProduto.Codigo),
                                         new XElement("Statuscode", PostProduto.RazaoStatus),
                                         new XElement("Statecode", PostProduto.Status)
                                         ));

                        string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                        string usuario = ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                        string senha   = ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                        bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                            context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                        if (resultado == false)
                        {
                            throw new ArgumentException(resposta);
                        }
                    }
                    #endregion
                }
                break;

            case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity &&
                    context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                {
                    var ProdutoPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, serviceFactory);
                    var ProdutoPos = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, serviceFactory);


                    #region SellOut
                    if (ProdutoPre.Status != ProdutoPos.Status)
                    {
                        string resposta;

                        XDocument xmlroot = new XDocument(
                            new XDeclaration("1.0", "utf-8", "no"),
                            new XElement("Produto",
                                         new XElement("Idprodutocrm", ProdutoPos.ID),
                                         new XElement("Statecode", ProdutoPos.Status)
                                         ));

                        string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                        string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                        string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                        bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                            context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                        if (resultado == false)
                        {
                            throw new ArgumentException(resposta);
                        }
                    }

                    #endregion
                }
                break;
            }
        }
Example #4
0
        public void Execute(IServiceProvider serviceProvider)
        {
            var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(null);
            ITracingService             trace          = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            if (context.Depth > 2)
            {
                return;
            }

            try
            {
                switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                {
                case Domain.Enum.Plugin.MessageName.Create:
                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        Entity entidadeAlterada      = (Entity)context.InputParameters["Target"];
                        Domain.Model.Product produto = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                        #region SellOut

                        //Verifica se o codigo do produto foi alterado
                        if (produto.Codigo != null)
                        {
                            string resposta;

                            XDocument xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Produto",
                                             new XElement("Idprodutocrm", produto.ID),
                                             new XElement("Idprodutoerp", produto.Codigo),
                                             new XElement("Statuscode", produto.RazaoStatus),
                                             new XElement("Statecode", produto.Status),
                                             new XElement("DescricaoProduto", produto.Descricao)
                                             ));

                            string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                            string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                            string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                            bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                                context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                        }
                        #endregion
                    }

                    break;

                case Domain.Enum.Plugin.MessageName.Update:

                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        Entity entidadeAlterada          = (Entity)context.InputParameters["Target"];
                        Entity entidadePost              = (Entity)context.PostEntityImages["imagem"];
                        Domain.Model.Product produto     = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);
                        Domain.Model.Product PostProduto = entidadePost.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                        if (produto.Status.HasValue &&
                            produto.Status == (int?)Domain.Enum.Produto.StateCode.inativo &&
                            produto.RazaoStatus != null && (int)produto.RazaoStatus == (int)Domain.Enum.Produto.StatusCode.Descontinuado)
                        {
                            new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, service).DescontinuarProduto(PostProduto);
                        }

                        if (produto.IntegrarNoPlugin.HasValue && !produto.IntegrarNoPlugin.Value)
                        {
                            string ret = new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(PostProduto);
                        }

                        #region SellOut

                        //Verifica se o codigo do produto foi alterado
                        if (produto.Codigo != null || produto.RazaoStatus.HasValue)
                        {
                            string resposta;

                            XDocument xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Produto",
                                             new XElement("Idprodutocrm", PostProduto.ID),
                                             new XElement("Idprodutoerp", PostProduto.Codigo),
                                             new XElement("Statuscode", PostProduto.RazaoStatus),
                                             new XElement("Statecode", PostProduto.Status),
                                             new XElement("DescricaoProduto", PostProduto.Descricao)
                                             ));

                            string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                            string usuario = ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                            string senha   = ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                            bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                                context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                        }
                        #endregion
                    }
                    break;


                case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                    if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity &&
                        context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                    {
                        var ProdutoPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, service);
                        var ProdutoPos = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, service);


                        #region SellOut
                        if (ProdutoPre.Status != ProdutoPos.Status)
                        {
                            string resposta;

                            XDocument xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Produto",
                                             new XElement("Idprodutocrm", ProdutoPos.ID),
                                             new XElement("Statecode", ProdutoPos.Status)
                                             ));

                            string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                            string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                            string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                            bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                                context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                        }

                        #endregion
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                trace.Trace(SDKore.Helper.Error.GetMessageError(ex));

                string message = SDKore.Helper.Error.Handler(ex);
                throw new InvalidPluginExecutionException(message, ex);
            }
        }