Пример #1
0
        public int CargaSellOutProdutos()
        {
            int    pagina               = 1;
            int    contagem             = 500;
            bool   moreRecords          = true;
            int    registrosAtualizados = 0;
            string usuario              = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
            string senha = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

            while (moreRecords)
            {
                try
                {
                    List <Model.Product> lstProduto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarTodosProdutos(ref pagina, contagem, out moreRecords);

                    foreach (var item in lstProduto)
                    {
                        string xml;
                        bool   resultado;
                        string resposta;

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

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

                        resultado = new Domain.Servicos.SellOutService(this.Organizacao,
                                                                       this.IsOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                        if (resultado == false)
                        {
                            throw new ArgumentException(resposta);
                        }
                        registrosAtualizados++;
                    }
                }
                catch (TimeoutException e)
                {
                    continue;
                }
            }
            return(registrosAtualizados);
        }
Пример #2
0
        public String PersistirDistribuidor(Conta conta, IPluginExecutionContext context)
        {
            string    cpfCnpj = string.Empty;
            string    usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
            string    senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");
            XDocument xmlroot;
            string    xml;
            string    resposta;
            Boolean   resultado;

            if (!Domain.Servicos.Helper.somenteNumeros(conta.CpfCnpj))
            {
                cpfCnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCnpj(conta.CpfCnpj);
            }

            xmlroot = new XDocument(
                new XDeclaration("1.0", "utf-8", "no"),
                new XElement("Distribuidor",
                             new XElement("Iddistribuidorcrm", conta.ID),
                             new XElement("Iddistribuidorerp", conta.CodigoMatriz),
                             new XElement("Cnpj", cpfCnpj),
                             new XElement("Statuscode", conta.RazaoStatus),
                             new XElement("Statecode", conta.Status),
                             new XElement("EnvioSelloutEstoque", conta.EnvioSelloutEstoque),
                             new XElement("Classificacao", conta.Classificacao.Id.ToString()),
                             new XElement("Subclassificacao", conta.Subclassificacao.Id.ToString()),
                             new XElement("Categoria", conta.Categoria.Id.ToString())
                             ));
            xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

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

            if (resultado)
            {
                return(String.Empty);
            }
            else
            {
                return(resposta);
            }
        }
Пример #3
0
        public void TestarProdutoSellOut()
        {
            string resposta = string.Empty;
            var    xmlroot  = new XDocument(
                new XDeclaration("1.0", "utf-8", "no"),
                new XElement("Distribuidor",
                             new XElement("Iddistribuidorcrm", "E53CBD6F-8E9D-E311-888D-00155D013E2F"),
                             new XElement("Iddistribuidorerp", "321321"),
                             new XElement("Statuscode", "3"),
                             new XElement("Statecode", "2")
                             //new XElement("Criado_em","30/06/2014 14:10:00")
                             ));
            //string xml = "<Statuscode>3</Statuscode><Statecode>2</Statecode><Criado_em xsi:nil=\"true\" /></Distribuidor>";
            //SellOutTestWS.SelloutWS test = new SellOutTestWS.SelloutWS();
            //string respost = string.Empty;
            //bool resp = test.EnvioSellout("usuario", "senha", "xml", out resposta);

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

            var resultado = new Domain.Servicos.SellOutService(this.OrganizationName,
                                                               this.IsOffline).MudarStatusDistribuidor("usuario", "senha", xml, out resposta);
        }
Пример #4
0
        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;
            }
        }
Пример #5
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);
            }
        }
Пример #6
0
        public int CargaSellOutContas()
        {
            int    pagina               = 1;
            int    contagem             = 10;
            bool   moreRecords          = true;
            int    registrosAtualizados = 0;
            string usuario              = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
            string senha = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

            while (moreRecords)
            {
                List <Model.Conta> lstConta = new Intelbras.CRM2013.Domain.Servicos.ContaService(this.Organizacao, this.IsOffline).ListarContas(ref pagina, contagem, out moreRecords);

                foreach (var item in lstConta)
                {
                    string    xml;
                    XDocument xmlroot;
                    bool      resultado;
                    string    resposta;
                    if (!string.IsNullOrEmpty(item.CodigoMatriz) && item.Status.HasValue && item.Status.HasValue && item.ID.HasValue && !String.IsNullOrEmpty(item.CpfCnpj))
                    {
                        string cpfCnpj = item.CpfCnpj;

                        switch (item.Classificacao.Name)
                        {
                        case Domain.Enum.Conta.Classificacao.Dist_BoxMover:
                        case Domain.Enum.Conta.Classificacao.Dist_VAD:
                            if (!Intelbras.CRM2013.Domain.Servicos.Helper.somenteNumeros(item.CpfCnpj))
                            {
                                cpfCnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCnpj(item.CpfCnpj);
                            }

                            xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Distribuidor",
                                             new XElement("Iddistribuidorcrm", item.ID),
                                             new XElement("Iddistribuidorerp", item.CodigoMatriz),
                                             new XElement("Cnpj", cpfCnpj),
                                             new XElement("Statuscode", item.RazaoStatus),
                                             new XElement("Statecode", item.Status)
                                             ));
                            xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                            resultado = new Domain.Servicos.SellOutService(this.Organizacao,
                                                                           this.IsOffline).PersistirDistribuidor(usuario, senha, xml, out resposta);
                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                            registrosAtualizados++;
                            break;

                        case Domain.Enum.Conta.Classificacao.Rev_Rel:
                        case Domain.Enum.Conta.Classificacao.Rev_Trans:
                            if (!Intelbras.CRM2013.Domain.Servicos.Helper.somenteNumeros(item.CpfCnpj))
                            {
                                cpfCnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCnpj(item.CpfCnpj);
                            }

                            xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Revenda",
                                             new XElement("Idrevendacrm", item.ID),
                                             new XElement("Idrevendaerp", item.CodigoMatriz),
                                             new XElement("Cpfcnpj", cpfCnpj),
                                             new XElement("Statuscode", item.RazaoStatus),
                                             new XElement("Statecode", item.Status)
                                             ));

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

                            resultado = new Domain.Servicos.SellOutService(this.Organizacao,
                                                                           this.IsOffline).PersistirRevenda(usuario, senha, xml, out resposta);

                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                            registrosAtualizados++;
                            break;
                        }
                    }
                }
            }
            return(registrosAtualizados);
        }