Esempio n. 1
0
        public Pollux.MSG0140 DefinirPropriedades(ProdutoEstabelecimento objModel)
        {
            #region Propriedades Crm->Xml
            Product produto = null;
            if (objModel.Produto != null)
            {
                produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(objModel.Produto.Id);
            }
            else
            {
                throw new Exception("Produto não encontrado!");
            }
            Pollux.MSG0140 msg0140 = new Pollux.MSG0140(itb.RetornaSistema(itb.Sistema.CRM), Helper.Truncate(produto.Codigo, 40));
            msg0140.CodigoProduto = produto.Codigo;
            if (objModel.Estabelecimento != null)
            {
                Estabelecimento estabelecimento = new Servicos.EstabelecimentoService(this.Organizacao, this.IsOffline).BuscaEstabelecimento(objModel.Estabelecimento.Id);
                if (estabelecimento.Codigo.HasValue)
                {
                    msg0140.CodigoEstabelecimento = estabelecimento.Codigo.Value;
                }
            }
            //Não é preciso passar Status - Msg delete por default
            #endregion

            return(msg0140);
        }
Esempio n. 2
0
        public List <ProdutoProjeto> DefinirPropriedadesProdutos(Intelbras.Message.Helper.MSG0268 xml, ClientePotencial ClientePotencial)
        {
            List <ProdutoProjeto> lstRetorno = new List <ProdutoProjeto>();

            #region Lista ProdutoProjeto
            foreach (var item in xml.ListaProdutosProjeto)
            {
                //verificar se o vinculo existe criar ou editar

                ProdutoProjeto produtoProjeto = new ProdutoProjeto(this.Organizacao, this.IsOffline);
                if (!String.IsNullOrEmpty(item.CodigoProdutoClientePotencial))
                {
                    ProdutoProjeto produtoProjetoTemp = new Servicos.RepositoryService().ProdutoProjeto.Retrieve(new Guid(item.CodigoProdutoClientePotencial)); //new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(item.CodigoProdutoClientePotencial);
                    if (produtoProjeto == null)
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Produto não cadastrado no Crm!";
                        return(null);
                    }

                    produtoProjeto = produtoProjetoTemp;
                }

                if (!String.IsNullOrEmpty(item.CodigoProduto))
                {
                    Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(item.CodigoProduto);
                    if (produto != null)
                    {
                        produtoProjeto.Produto = new Lookup(produto.ID.Value, "");
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Produto não cadastrado no Crm!";
                        return(null);
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Codigo Produto não enviado.";
                    return(null);
                }

                produtoProjeto.ClientePotencial = new Lookup(ClientePotencial.ID.Value, "");
                produtoProjeto.ValorUnitario    = (item.PrecoUnitario == null) ? 0 : item.PrecoUnitario;
                produtoProjeto.Quantidade       = item.Quantidade;
                produtoProjeto.ValorTotal       = (item.ValorTotal == null) ? 0 : item.ValorTotal;

                lstRetorno.Add(produtoProjeto);
            }
            #endregion

            return(lstRetorno);
        }
Esempio n. 3
0
        public Pollux.MSG0139 DefinirPropriedades(ProdutoEstabelecimento objModel)
        {
            #region Propriedades Crm->Xml
            Product produto = null;
            if (objModel.Produto != null)
            {
                produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(objModel.Produto.Id);
            }
            else
            {
                throw new Exception("Produto não encontrado!");
            }

            Pollux.MSG0139 msg0139 = new Pollux.MSG0139(itb.RetornaSistema(itb.Sistema.CRM), Helper.Truncate(produto.Codigo, 40));

            msg0139.CodigoProduto = produto.Codigo;
            if (objModel.Estabelecimento != null)
            {
                Estabelecimento estabelecimento = new Servicos.EstabelecimentoService(this.Organizacao, this.IsOffline).BuscaEstabelecimento(objModel.Estabelecimento.Id);
                if (estabelecimento.Codigo.HasValue)
                {
                    msg0139.CodigoEstabelecimento = estabelecimento.Codigo.Value;
                }
            }
            if (objModel.Status.HasValue)
            {
                if (objModel.Status.Value == 1)
                {
                    msg0139.Situacao = 0;
                }
                else
                {
                    msg0139.Situacao = 1;
                }
            }


            #endregion

            return(msg0139);
        }
Esempio n. 4
0
        public Pollux.MSG0287 DefinirPropriedades(ProdutoCondicaoPagamento crm)
        {
            var condPagamento = new Servicos.CondicaoPagamentoService(this.Organizacao, this.IsOffline).BuscaCondicaoPagamento(crm.CondicaoPagamento.Id);

            if (condPagamento == null)
            {
                throw new ArgumentException("(CRM) Condição de Pagamento Não Localizada");
            }

            var produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(crm.Produto.Id);

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

            Pollux.MSG0287 retMsg = new Pollux.MSG0287(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), condPagamento.Codigo.ToString() + "+" + produto.Codigo.ToString());
            retMsg.CodigoCondicaoPagamento = condPagamento.Codigo;
            retMsg.CodigoProduto           = produto.Codigo;
            retMsg.Situacao = crm.Status;

            return(retMsg);
        }
Esempio n. 5
0
        private List <Pollux.Entities.ProdutoSolicitacaoItem> RetornaListaItens(Guid solicitacaoId)
        {
            List <Pollux.Entities.ProdutoSolicitacaoItem> lstRetorno = new List <Pollux.Entities.ProdutoSolicitacaoItem>();

            List <ProdutosdaSolicitacao> lstProdutoSolicitacao = new Servicos.ProdutosdaSolicitacaoService(this.Organizacao, this.IsOffline).ListarPorSolicitacao(solicitacaoId);

            foreach (var itemProdSol in lstProdutoSolicitacao)
            {
                Pollux.Entities.ProdutoSolicitacaoItem objItemPollux = new Pollux.Entities.ProdutoSolicitacaoItem();
                if (itemProdSol.Produto != null)
                {
                    Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(itemProdSol.Produto.Id);
                    if (produto != null)
                    {
                        objItemPollux.CodigoProduto = produto.Codigo;
                    }
                    else
                    {
                        throw new ArgumentException("(CRM) Produto do Item não preenchido");
                    }
                }
                objItemPollux.Situacao = itemProdSol.State.Value;

                objItemPollux.Proprietario     = "259A8E4F-15E9-E311-9420-00155D013D39";
                objItemPollux.TipoProprietario = "systemuser";

                if (itemProdSol.BeneficioPrograma != null)
                {
                    objItemPollux.CodigoBeneficio = itemProdSol.BeneficioPrograma.Id.ToString();
                }
                else
                {
                    throw new Exception("(CRM) Código do Benefício não preenchido.");
                }

                objItemPollux.CodigoSolicitacaoBeneficio = solicitacaoId.ToString();
                if (!itemProdSol.ValorUnitario.HasValue)
                {
                    objItemPollux.ValorUnitario = 0;
                }
                else
                {
                    objItemPollux.ValorUnitario = itemProdSol.ValorUnitario.Value;
                }

                if (!itemProdSol.ValorTotal.HasValue)
                {
                    objItemPollux.ValorTotal = 0;
                }
                else
                {
                    objItemPollux.ValorTotal = itemProdSol.ValorTotal.Value;
                }

                if (itemProdSol.Fatura != null)
                {
                    Fatura fatura = new Servicos.FaturaService(this.Organizacao, this.IsOffline).ObterPor(itemProdSol.Fatura.Id);

                    if (fatura != null)
                    {
                        objItemPollux.ChaveIntegracaoNotaFiscal = fatura.ChaveIntegracao;
                    }
                }

                if (itemProdSol.QuantidadeAprovada.HasValue)
                {
                    objItemPollux.QuantidadeAprovado = itemProdSol.QuantidadeAprovada.Value;
                }

                if (itemProdSol.ValorUnitarioAprovado.HasValue)
                {
                    objItemPollux.ValorUnitarioAprovado = itemProdSol.ValorUnitarioAprovado.Value;
                }

                if (itemProdSol.ValorTotalAprovado.HasValue)
                {
                    objItemPollux.ValorTotalAprovado = itemProdSol.ValorTotalAprovado.Value;
                }

                objItemPollux.Quantidade = itemProdSol.QuantidadeSolicitada.Value;
                //Campos Novas
                objItemPollux.CodigoProdutoSolicitacao = itemProdSol.ID.Value.ToString();
                Estabelecimento estabelecimento = new Servicos.EstabelecimentoService(this.Organizacao, this.IsOffline).BuscaEstabelecimento(itemProdSol.Estabelecimento.Id);

                if (estabelecimento != null && estabelecimento.Codigo.HasValue)
                {
                    objItemPollux.CodigoEstabelecimento = estabelecimento.Codigo.Value;
                }
                else
                {
                    throw new ArgumentException("(CRM) Estabelecimento/codigo Estabelecimento não cadastrado no Crm.");
                }

                objItemPollux.Acao = "A";

                if (itemProdSol.QuantidadeCancelada.HasValue)
                {
                    objItemPollux.QuantidadeCancelada = itemProdSol.QuantidadeCancelada.Value;
                }

                if (itemProdSol.ValorPago.HasValue)
                {
                    objItemPollux.ValorPago = itemProdSol.ValorPago.Value;
                }

                if (itemProdSol.ValorCancelado.HasValue)
                {
                    objItemPollux.ValorCancelado = itemProdSol.ValorCancelado.Value;
                }

                lstRetorno.Add(objItemPollux);
            }

            return(lstRetorno);
        }
Esempio n. 6
0
        private List <ProdutosdaSolicitacao> DefinirPropriedadesItens(List <Pollux.Entities.ProdutoSolicitacaoItem> listSolicitacaoItens, string origem, Guid?solicitacaoID)
        {
            List <ProdutosdaSolicitacao> lstRetorno = new List <ProdutosdaSolicitacao>();

            #region Lista ProdutoSoliciatacao
            foreach (var itemPollux in listSolicitacaoItens.Where(x => x.Situacao == (int)Enum.ProdutoSolicitacao.Status.Ativo))
            {
                ProdutosdaSolicitacao produtoSolicitacao = new ProdutosdaSolicitacao(this.Organizacao, this.IsOffline);

                if (!String.IsNullOrEmpty(itemPollux.CodigoProduto))
                {
                    Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(itemPollux.CodigoProduto);
                    if (produto != null)
                    {
                        produtoSolicitacao.Produto = new Lookup(produto.ID.Value, "");
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Produto não cadastrado no Crm!";
                        return(null);
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoProduto não enviado.";
                    return(null);
                }

                #region SETA ORIGEM PARA REGRA DE NEGOCIO ESPECIFICA (2)
                if (!string.IsNullOrEmpty(origem))
                {
                    produtoSolicitacao.IntegradoDe = origem;
                }
                else
                {
                    produtoSolicitacao.AddNullProperty("IntegradoDe");
                }
                #endregion

                if (!String.IsNullOrEmpty(itemPollux.CodigoBeneficio) && itemPollux.CodigoBeneficio.Length == 36)
                {
                    Beneficio beneficio = new Servicos.BeneficioService(this.Organizacao, this.IsOffline).ObterPor(new Guid(itemPollux.CodigoBeneficio));
                    if (beneficio != null)
                    {
                        produtoSolicitacao.BeneficioPrograma = new Lookup(beneficio.ID.Value, "");
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "CodigoBeneficio do ProdutoSolicitacao : " + itemPollux.CodigoBeneficio + " - não cadastrado no Crm.";
                        return(null);
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoBeneficio não Enviado ou fora do padrão(Guid).";
                    return(null);
                }
                if (solicitacaoID.HasValue)
                {
                    produtoSolicitacao.SolicitacaoBeneficio = new Lookup(solicitacaoID.Value, "");
                }

                produtoSolicitacao.ValorUnitario = itemPollux.ValorUnitario;
                produtoSolicitacao.ValorTotal    = itemPollux.ValorTotal;
                if (!String.IsNullOrEmpty(itemPollux.ChaveIntegracaoNotaFiscal))
                {
                    Fatura fatura = new Servicos.FaturaService(this.Organizacao, this.IsOffline).ObterPorChaveIntergacao(itemPollux.ChaveIntegracaoNotaFiscal);
                    if (fatura != null)
                    {
                        produtoSolicitacao.Fatura = new Lookup(fatura.ID.Value, "");
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Fatura referente ChaveIntegracaoNotaFiscal: " + itemPollux.ChaveIntegracaoNotaFiscal + " - não cadastrado no Crm.";
                        return(null);
                    }
                }

                if (itemPollux.QuantidadeAprovado.HasValue)
                {
                    produtoSolicitacao.QuantidadeAprovada = itemPollux.QuantidadeAprovado;
                }
                else
                {
                    produtoSolicitacao.AddNullProperty("QuantidadeAprovada");
                }

                if (itemPollux.ValorUnitarioAprovado.HasValue)
                {
                    produtoSolicitacao.ValorUnitarioAprovado = itemPollux.ValorUnitarioAprovado;
                }
                else
                {
                    produtoSolicitacao.AddNullProperty("ValorUnitarioAprovado");
                }

                if (itemPollux.ValorTotalAprovado.HasValue)
                {
                    produtoSolicitacao.ValorTotalAprovado = itemPollux.ValorTotalAprovado;
                }
                else
                {
                    produtoSolicitacao.AddNullProperty("ValorTotalAprovado");
                }

                produtoSolicitacao.QuantidadeSolicitada = itemPollux.Quantidade;
                //Novos campos

                if (!String.IsNullOrEmpty(itemPollux.CodigoProdutoSolicitacao))
                {
                    produtoSolicitacao.ID = new Guid(itemPollux.CodigoProdutoSolicitacao);
                }

                produtoSolicitacao.Acao = itemPollux.Acao;

                Estabelecimento estabelecimento = new Servicos.EstabelecimentoService(this.Organizacao, this.IsOffline).BuscaEstabelecimentoPorCodigo(itemPollux.CodigoEstabelecimento.Value);

                if (estabelecimento != null)
                {
                    produtoSolicitacao.Estabelecimento = new Lookup(estabelecimento.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Estabelecimento codigo : " + itemPollux.CodigoEstabelecimento.ToString() + " - não cadastrado no Crm.";
                    return(null);
                }

                if (itemPollux.Situacao.HasValue)
                {
                    produtoSolicitacao.State = itemPollux.Situacao.Value;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Situacao não informado favor verificar integração.";
                    return(null);
                }

                if (itemPollux.QuantidadeCancelada.HasValue)
                {
                    produtoSolicitacao.QuantidadeCancelada = itemPollux.QuantidadeCancelada.Value;
                }

                if (itemPollux.ValorPago.HasValue)
                {
                    produtoSolicitacao.ValorPago = itemPollux.ValorPago.Value;
                }

                if (itemPollux.ValorCancelado.HasValue)
                {
                    produtoSolicitacao.ValorCancelado = itemPollux.ValorCancelado.Value;
                }

                if (itemPollux.QuantidadeAjustada.HasValue)
                {
                    produtoSolicitacao.QuantidadeAjustada = itemPollux.QuantidadeAjustada.Value;
                }

                lstRetorno.Add(produtoSolicitacao);
            }
            #endregion

            return(lstRetorno);
        }
Esempio n. 7
0
        public List <PrecoProduto> DefinirPropriedadesLista(Intelbras.Message.Helper.MSG0101 xml)
        {
            List <PrecoProduto> lstPrecoProduto = new List <PrecoProduto>();

            List <String> lstCodProd = new List <String>();

            foreach (var item in xml.ProdutosItens)
            {
                lstCodProd.Add(item.CodigoProduto);
            }

            List <Product> lstProduto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarProdutosPorCodigo(lstCodProd);

            Guid contaProduto = new Guid();

            if (!String.IsNullOrEmpty(xml.Conta) && xml.Conta.Length == 36)
            {
                contaProduto = new Guid(xml.Conta);
            }
            else if (!String.IsNullOrEmpty(xml.Conta) && xml.Conta.Length < 36)
            {
                Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaContaPorCpfCnpj(xml.Conta);

                if (conta != null)
                {
                    contaProduto = conta.ID.Value;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Canal não encontrado.";
                    lstPrecoProduto = null;
                    return(lstPrecoProduto);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Identificador do Canal não enviado.";
                lstPrecoProduto = null;
                return(lstPrecoProduto);
            }

            foreach (var item in xml.ProdutosItens)
            {
                PrecoProduto precoProduto = new PrecoProduto(this.Organizacao, this.IsOffline);

                if (!String.IsNullOrEmpty(item.CodigoProduto))
                {
                    precoProduto.CodigoProduto = item.CodigoProduto;

                    Product produto = new Product(this.Organizacao, this.IsOffline);
                    produto = lstProduto.Where(x => x.Codigo == item.CodigoProduto).FirstOrDefault <Product>();
                    if (produto != null)
                    {
                        precoProduto.ProdutoId = produto.ID.Value;
                        precoProduto.Produto   = produto;

                        if (item.TipoPortfolio == (int)Domain.Enum.Portfolio.Tipo.CrossSelling)
                        {
                            precoProduto.TipoCrossSelling = true;
                        }
                        else
                        {
                            precoProduto.TipoCrossSelling = false;
                        }

                        precoProduto.codEstabelecimento = item.CodigoEstabelecimento.Value;
                        precoProduto.codUnidade         = item.CodigoUnidadeNegocio;
                        precoProduto.codFamiliaComl     = item.CodigoFamiliaComercial;
                        precoProduto.tipoPortofolio     = item.TipoPortfolio.Value;
                    }
                    else
                    {
                        precoProduto.Produto      = null;
                        precoProduto.ProdutoId    = Guid.Empty;
                        precoProduto.ValorProduto = 0;
                        precoProduto.MensagemErro = "Produto não cadastrado no Crm.";
                    }
                }
                else
                {
                    precoProduto.Produto      = null;
                    precoProduto.ProdutoId    = Guid.Empty;
                    precoProduto.ValorProduto = 0;
                    precoProduto.MensagemErro = "Identificador do Produto não enviado.";
                }

                if (!String.IsNullOrEmpty(item.Moeda))
                {
                    precoProduto.Moeda = item.Moeda;
                }
                else
                {
                    precoProduto.Produto      = null;
                    precoProduto.ProdutoId    = Guid.Empty;
                    precoProduto.ValorProduto = 0;
                    precoProduto.MensagemErro = "Moeda não enviada.";
                }

                precoProduto.ContaId = contaProduto;
                decimal qtd = 0;

                if (Decimal.TryParse(item.Quantidade.ToString(), out qtd))
                {
                    try
                    {
                        precoProduto.Quantidade = (int)qtd;
                    }
                    catch
                    {
                        precoProduto.Produto      = null;
                        precoProduto.ProdutoId    = Guid.Empty;
                        precoProduto.ValorProduto = 0;
                        precoProduto.MensagemErro = "Produto com 'Quantidade' fora do padrão.";
                    }
                }
                else
                {
                    precoProduto.Produto      = null;
                    precoProduto.ProdutoId    = Guid.Empty;
                    precoProduto.ValorProduto = 0;
                    precoProduto.MensagemErro = "Produto com 'Quantidade' fora do padrão ou não enviado.";
                }
                precoProduto.ValorProduto = 0;
                lstPrecoProduto.Add(precoProduto);
            }
            return(lstPrecoProduto);
        }
Esempio n. 8
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            var xml = this.CarregarMensagem <Pollux.MSG0100>(mensagem);
            List <ProdutoPortfolio> lstProdutoPortifolio = null;
            List <Pollux.Entities.ProdutoPortifolio> lstPolluxPortifolio = new List <Pollux.Entities.ProdutoPortifolio>();

            ProdutoPortfolio objeto = this.DefinirPropriedades(xml);

            if (!String.IsNullOrEmpty(xml.Classificacao))
            {
                Classificacao classif = new Servicos.ClassificacaoService(this.Organizacao, this.IsOffline).BuscaClassificacao(new Guid(xml.Classificacao));
                if (classif != null)
                {
                    classificacaoId = classif.ID.Value;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Classificação - " + xml.Classificacao + " - não cadastrada no Crm.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
                }
            }
            else
            {
                //new
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "O campo Classificação é obrigatorio.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
            }



            if (!String.IsNullOrEmpty(xml.UnidadeNegocio))
            {
                UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.UnidadeNegocio);
                if (unidadeNeg != null)
                {
                    unidadeNegocioId = unidadeNeg.ID.Value;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "UnidadeNegocio - " + xml.UnidadeNegocio + " - não cadastrada no Crm.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
                }
            }



            if (!String.IsNullOrEmpty(xml.Conta))
            {
                Conta objetoConta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.Conta));

                if (objetoConta != null && objetoConta.Status.Value == 0)
                {
                    #region Conta sem categoria de canal ativa
                    //Regra: É preciso recuperar as unidades de negócios com qual o canal possui relacionamento que estão registradas na entidade "Categorias do Canal".
                    //Se não forem encontrados registros, o calculo do portfólio deve ser interrompido e deve ser retornado ao ESB como resultado "Falha"."
                    var categoriaCanal = new Servicos.CategoriaCanalService(this.Organizacao, this.IsOffline).ListarPor(objetoConta.ID, unidadeNegocioId);
                    if (categoriaCanal == null || categoriaCanal.Count.Equals(0))
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "(CRM):Conta não possui relacionamento com unidades de negócio Intelbras";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
                    }
                    #endregion

                    #region Nenhum portfólio encontrado
                    if (unidadeNegocioId != null)
                    {
                        var portifolio = new Servicos.PortfolioService(this.Organizacao, this.IsOffline).ListPortifolios(unidadeNegocioId.Value, classificacaoId.Value);
                        if (portifolio.Count == 0)
                        {
                            resultadoPersistencia.Sucesso  = false;
                            resultadoPersistencia.Mensagem = "(CRM): Não foram encontrados portfólios para a classificação da conta";
                            retorno.Add("Resultado", resultadoPersistencia);
                            return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
                        }
                    }
                    #endregion

                    #region Nenhum produto de portfólio encontrado

                    lstProdutoPortifolio = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ProdutosPortfolio(objetoConta, classificacaoId, unidadeNegocioId);

                    if (lstProdutoPortifolio != null && lstProdutoPortifolio.Count > 0)
                    {
                        lstPolluxPortifolio = this.CarregarListaProdutoPortifolio(lstProdutoPortifolio);
                    }
                    else
                    {
                        //verifica se existe portfolios sem produto
                        var portifolio = new Servicos.PortfolioService(this.Organizacao, this.IsOffline).VerificaPortfolio(objetoConta, classificacaoId, unidadeNegocioId);

                        if (portifolio.Count > 0)
                        {
                            resultadoPersistencia.Sucesso  = false;
                            resultadoPersistencia.Mensagem = "(CRM): Foram encontrados portfólios mas nenhum produto relacionado aos mesmos.";
                            retorno.Add("Resultado", resultadoPersistencia);
                            return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
                        }
                        else
                        {
                            //Erro Lista Portifolio vazia
                            resultadoPersistencia.Sucesso  = false;
                            resultadoPersistencia.Mensagem = "(CRM): Não foram encontrados portfólios para a classificação da conta";
                            retorno.Add("Resultado", resultadoPersistencia);
                            return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
                        }
                    }
                    #endregion
                }
                else
                {
                    //Conta inativa ou não existe
                    //Conta nao encontrada
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "(CRM): Conta não existente e/ ou inativa";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Identificador do Canal não enviado.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
            }

            if (lstPolluxPortifolio.Count > 0)
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso.";
                retorno.Add("ProdutoItem", lstPolluxPortifolio);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
            }
            else
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Produtos Itens não encontrados no Crm.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno));
            }
        }
Esempio n. 9
0
        public List <Pollux.Entities.ProdutoPortifolio> CarregarListaProdutoPortifolio(List <ProdutoPortfolio> lstProdutoPortifolio)
        {
            List <Pollux.Entities.ProdutoPortifolio> lstPolluxPortifolio = new List <Pollux.Entities.ProdutoPortifolio>();

            List <Guid>    lstProdutoListaIds = new List <Guid>();
            List <Product> lstProduto         = new List <Product>();
            List <Product> lstProdutoCompleto = new List <Product>();

            foreach (var prodItem in lstProdutoPortifolio)
            {
                lstProdutoListaIds.Add(prodItem.Produto.Id);
            }



            if (lstProdutoListaIds.Count > 0)
            {
                lstProduto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarProduto(lstProdutoListaIds);
            }


            List <ProdutoTreinamento> lstProdTreinamentoCache  = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ProdutoTreinamentoListarTodos();
            List <TreinamentoCanal>   lstTreinamentoCanalCache = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).TreinamentoCanalListarTodos();

            foreach (Product produto in lstProduto)
            {
                //Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(item.Produto.Id);
                Pollux.Entities.ProdutoPortifolio objPollux = new Pollux.Entities.ProdutoPortifolio();

                objPollux.CodigoProduto = produto.Codigo;
                objPollux.Bloqueado     = false;
                objPollux.TemCache      = false;
                objPollux.TipoPortfolio = lstProdutoPortifolio.Where(x => x.Produto.Id == produto.ID.Value).First().PortfolioTipo;

                if (produto.ExigeTreinamento.Value)
                {
                    //Para cada um que requere certificação, localiza a lista de Treinamentos/Certificações requeridas na entidade Produtos x Treinamento/Certificação.
                    List <ProdutoTreinamento> lstProdTreinamento = lstProdTreinamentoCache.Where(x => x.Produto.Id == produto.ID.Value).ToList();
                    //RepositoryService.ProdutoTreinamento.ListarPorProduto(prodPort.Produto.Id);
                    foreach (ProdutoTreinamento prodTreinamento in lstProdTreinamento)
                    {
                        List <TreinamentoCanal> lstTreinamentoCanal = lstTreinamentoCanalCache.Where(y => y.Treinamento.Id == prodTreinamento.Treinamento.Id).
                                                                      Where(y => y.Canal.Id == lstProdutoPortifolio.First().CanalId).ToList();
                        //RepositoryService.TreinamentoCanal.ListarPor((Guid)prodTreinamento.Treinamento.Id, (Guid)canalId);

                        //Para cada Treinamento encontrado, verifica quais estão com Status igual a “Não cumprido” na entidade Treinamentos do Canal (de mesmo Canal e Treinamento obtidos).
                        if (lstTreinamentoCanal.Count(x => x.StatusCompromisso.Name == Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido) > 0)
                        {
                            //Remove da lista de produtos do portfólio do passo 8, todos os produtos encontrados sem treinamento no passo 9 (remove da lista, não da base do CRM).
                            //E apenas bloqueia o portfolio se tiver o flag marcado como sim
                            //Product prodBloq = RepositoryService.Produto.ObterPor(prodTreinamento.Produto.Id);

                            if (prodTreinamento.BloqueiaPortfolio.Value == (int)Enum.ProdutoTreinamento.BloqueiaPortfolio.Sim)
                            {
                                objPollux.Bloqueado = true;
                            }
                        }
                    }
                }

                lstPolluxPortifolio.Add(objPollux);
            }


            return(lstPolluxPortifolio);
        }
Esempio n. 10
0
        public Model.Product DefinirPropriedades(Intelbras.Message.Helper.MSG0088 xml)
        {
            RetornaGuid retornaGUID = new RetornaGuid(this.Organizacao, this.IsOffline);

            var crm = new Product(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml

            if (!String.IsNullOrEmpty(xml.CodigoProduto))
            {
                crm.Codigo = xml.CodigoProduto;
            }

            if (xml.DataAlteracaoPrecoVenda.HasValue)
            {
                crm.DataUltAlteracaoPVC = xml.DataAlteracaoPrecoVenda.Value;
            }

            Product prodRet = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(xml.CodigoProduto);
            if (prodRet != null)
            {
                crm.ID = prodRet.ID;
            }


            crm.IntegrarNoPlugin = true;

            if (!String.IsNullOrEmpty(xml.Nome))
            {
                crm.Nome = xml.Nome;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Nome não enviado.";
                return(crm);
            }

            crm.Status = xml.Situacao;

            if (xml.Situacao == 0)
            {
                crm.RazaoStatus = 1;
            }
            else
            {
                crm.RazaoStatus = (int)Enum.Produto.StatusCode.Descontinuado;
            }

            if (xml.TipoProduto.HasValue && System.Enum.IsDefined(typeof(Enum.Produto.TipoProduto), xml.TipoProduto))
            {
                crm.TipoProdutoid = xml.TipoProduto;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Tipo de produto não enviado ou inválido.";
                return(crm);
            }

            if (xml.NaturezaProduto.HasValue && System.Enum.IsDefined(typeof(Enum.Produto.NaturezaProduto), xml.NaturezaProduto))
            {
                crm.NaturezaProduto = xml.NaturezaProduto;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Natureza Produto não enviada ou inválida.";
                return(crm);
            }

            crm.GrupoEstoque = new Lookup(retornaGUID.GrupoEstoque(xml.GrupoEstoque.Value, ref resultadoPersistencia), "");
            if (crm.GrupoEstoque.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.UnidadeNegocio = new Lookup(retornaGUID.UnidadeNegocio(xml.UnidadeNegocio, ref resultadoPersistencia), "");
            if (crm.UnidadeNegocio.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.Segmento = new Lookup(retornaGUID.Segmento(xml.Segmento, ref resultadoPersistencia), "");
            if (crm.Segmento.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.FamiliaProduto = new Lookup(retornaGUID.FamiliaProduto(xml.Familia, ref resultadoPersistencia), "");
            if (crm.FamiliaProduto.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.SubfamiliaProduto = new Lookup(retornaGUID.SubfamiliaProduto(xml.SubFamilia, ref resultadoPersistencia), "");
            if (crm.SubfamiliaProduto.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.Origem = new Lookup(retornaGUID.Origem(xml.Origem, ref resultadoPersistencia), "");
            if (crm.Origem.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.UnidadePadrao = new Lookup(retornaGUID.UnidadeMedida(xml.UnidadeMedida, ref resultadoPersistencia), "");
            if (crm.UnidadePadrao.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.GrupoUnidades = new Lookup(retornaGUID.GrupoUnidadeMedida(xml.GrupoUnidadeMedida, ref resultadoPersistencia), "");
            if (crm.GrupoUnidades.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.FamiliaMaterial = new Lookup(retornaGUID.FamiliaMaterial(xml.FamiliaMaterial, ref resultadoPersistencia), "");
            if (crm.FamiliaMaterial.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.FamiliaComercial = new Lookup(retornaGUID.FamiliaComercial(xml.FamiliaComercial, ref resultadoPersistencia), "");
            if (crm.FamiliaComercial.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.ListaPrecoPadrao = new Lookup(retornaGUID.ListaPreco(xml.ListaPreco, ref resultadoPersistencia), "");
            if (crm.ListaPrecoPadrao.Id == Guid.Empty)
            {
                return(crm);
            }

            crm.Moeda = new Lookup(retornaGUID.Moeda(xml.Moeda, ref resultadoPersistencia), "");
            if (crm.Moeda.Id == Guid.Empty)
            {
                return(crm);
            }

            if (xml.QuantidadeDecimal.HasValue)
            {
                crm.QuantidadeDecimal = xml.QuantidadeDecimal.Value;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Quantidade Decimal não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.Descricao))
            {
                crm.Descricao = xml.Descricao;
            }
            else
            {
                crm.AddNullProperty("Descricao");
            }

            if (xml.PesoEstoque.HasValue)
            {
                crm.PesoEstoque = xml.PesoEstoque.Value;
            }
            else
            {
                crm.AddNullProperty("PesoEstoque");
            }

            if (!String.IsNullOrEmpty(xml.Fabricante))
            {
                crm.NomeFornecedor = xml.Fabricante;
            }
            else
            {
                crm.AddNullProperty("NomeFornecedor");
            }

            if (!String.IsNullOrEmpty(xml.NumeroPecaFabricante))
            {
                crm.NumeroPecaFabricante = xml.NumeroPecaFabricante;
            }
            else
            {
                crm.AddNullProperty("NumeroPecaFabricante");
            }

            if (xml.VolumeEstoque.HasValue)
            {
                crm.VolumeEstoque = xml.VolumeEstoque;
            }
            else
            {
                crm.AddNullProperty("VolumeEstoque");
            }

            if (!String.IsNullOrEmpty(xml.ComplementoProduto))
            {
                crm.Complemento = xml.ComplementoProduto;
            }
            else
            {
                crm.AddNullProperty("Complemento");
            }

            if (!String.IsNullOrEmpty(xml.URL))
            {
                crm.Url = xml.URL;
            }
            else
            {
                crm.AddNullProperty("Url");
            }

            if (xml.QuantidadeDisponivel.HasValue)
            {
                crm.QuantidadeDisponivel = xml.QuantidadeDisponivel;
            }
            else
            {
                crm.AddNullProperty("QuantidadeDisponivel");
            }

            if (!String.IsNullOrEmpty(xml.Fornecedor))
            {
                crm.Fornecedor = xml.Fornecedor;
            }
            else
            {
                crm.AddNullProperty("Fornecedor");
            }

            if (!String.IsNullOrEmpty(xml.EAN))
            {
                crm.EAN = xml.EAN;
            }
            else
            {
                crm.AddNullProperty("EAN");
            }

            if (!String.IsNullOrEmpty(xml.NCM))
            {
                crm.NCM = xml.NCM;
            }
            else
            {
                crm.AddNullProperty("NCM");
            }

            if (xml.AliquotaIPI.HasValue)
            {
                crm.PercentualIPI = xml.AliquotaIPI;
            }
            else
            {
                crm.AddNullProperty("PercentualIPI");
            }

            if (!crm.ID.HasValue)
            {
                if (xml.ConsiderarOrcamentoMeta.HasValue)
                {
                    crm.ConsideraOrcamentoMeta = xml.ConsiderarOrcamentoMeta;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "ConsiderarOrcamentoMeta não enviado.";
                    return(crm);
                }
                if (xml.FaturamentoOutroProduto.HasValue)
                {
                    crm.FaturamentoOutroProduto = xml.FaturamentoOutroProduto;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "FaturamentoOutroProduto não enviado.";
                    return(crm);
                }
                if (xml.QuantidadeMultipla.HasValue)
                {
                    crm.QuantidadeMultiplaProduto = xml.QuantidadeMultipla;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "QuantidadeMultipla não enviada.";
                    return(crm);
                }
                if (xml.ExigeTreinamento.HasValue)
                {
                    crm.ExigeTreinamento = (bool)xml.ExigeTreinamento;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Exige Treinamento não enviado.";
                    return(crm);
                }

                //if (xml.PassivelSolicitacaoBeneficio.HasValue)
                //    crm.PermitirEmSolBenef = (bool)xml.PassivelSolicitacaoBeneficio;
                //else
                //{
                //    resultadoPersistencia.Sucesso = false;
                //    resultadoPersistencia.Mensagem = "Passivel Solicitacao de Beneficio não enviado.";
                //    return crm;
                //}

                if (xml.RebateAtivado.HasValue)
                {
                    crm.RebatePosVendaAtivado = (bool)xml.RebateAtivado;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Rebate Ativado não enviado.";
                    return(crm);
                }

                //if (xml.PassivelSolicitacaoBeneficio.HasValue)
                //{
                //    crm.PermitirEmSolBenef = (bool)xml.PassivelSolicitacaoBeneficio;
                //}
                //else
                //{
                //    resultadoPersistencia.Sucesso = false;
                //    resultadoPersistencia.Mensagem = "Passível Solicitação de Benefício não enviado.";
                //    return crm;
                //}

                //if (xml.TemMensagem.HasValue)
                //{
                //    if (xml.TemMensagem == true)
                //    {
                //        if (xml.DescricaoMensagem != null && xml.DescricaoMensagem != String.Empty)
                //            crm.Mensagem = xml.DescricaoMensagem;
                //        else
                //        {
                //            resultadoPersistencia.Sucesso = false;
                //            resultadoPersistencia.Mensagem = "Descrição de Mensagem não enviada quando Tem Mensagem = Sim";
                //            return crm;
                //        }
                //    }
                //    crm.TemMensagem = (bool)xml.TemMensagem;
                //}
                //else
                //{
                //    resultadoPersistencia.Sucesso = false;
                //    resultadoPersistencia.Mensagem = "Tem Mensagem não enviado.";
                //    return crm;
                //}

                if (xml.ShowRoom.HasValue)
                {
                    crm.Showroom = xml.ShowRoom;
                }

                if (xml.ShowRoomRevendas.HasValue)
                {
                    crm.ShowroomRevenda = xml.ShowRoomRevendas;
                }

                if (xml.Backup.HasValue)
                {
                    crm.BackupDistribuidor = xml.Backup;
                }

                if (xml.BackupRevendas.HasValue)
                {
                    crm.BackupRevenda = xml.BackupRevendas;
                }

                if (!String.IsNullOrEmpty(xml.DepositoPadrao))
                {
                    crm.DepositoPadrao = xml.DepositoPadrao;
                }
                else
                {
                    crm.AddNullProperty("DepositoPadrao");
                }

                if (xml.CodigoTipoDespesa.HasValue)
                {
                    crm.CodigoTipoDespesa = xml.CodigoTipoDespesa;
                }

                if (xml.DestaqueNCM.HasValue)
                {
                    crm.DestaqueNCM = xml.DestaqueNCM;
                }

                if (!String.IsNullOrEmpty(xml.NVE))
                {
                    crm.NVE = xml.NVE;
                }
                else
                {
                    crm.AddNullProperty("NVE");
                }

                if (!String.IsNullOrEmpty(xml.CodigoUnidadeFamilia))
                {
                    crm.CodigoUnidadeFamilia = xml.CodigoUnidadeFamilia;
                }
                else
                {
                    crm.AddNullProperty("NVE");
                }

                if (xml.TemMensagem.HasValue)
                {
                    if (xml.TemMensagem == true)
                    {
                        if (xml.DescricaoMensagem != null && xml.DescricaoMensagem != String.Empty)
                        {
                            crm.Mensagem = xml.DescricaoMensagem;
                        }
                        else
                        {
                            resultadoPersistencia.Sucesso  = false;
                            resultadoPersistencia.Mensagem = "Descrição de Mensagem não enviada quando Tem Mensagem = Sim";
                            return(crm);
                        }
                    }
                    crm.TemMensagem = (bool)xml.TemMensagem;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Tem Mensagem não enviado.";
                    return(crm);
                }
            }
            else
            {
                crm.ConsideraOrcamentoMeta    = null;
                crm.QuantidadeMultiplaProduto = null;
                crm.FaturamentoOutroProduto   = null;
                crm.ExigeTreinamento          = null;
                crm.CustoAtual            = null;
                crm.RebatePosVendaAtivado = null;
                crm.Showroom = null;
            }

            if (xml.EKit.HasValue)
            {
                crm.EKit = xml.EKit.Value;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "É kit não enviado.";
                return(crm);
            }

            if (xml.EKit.Value)
            {
                if (xml.ProdutosFilhos == null || xml.ProdutosFilhos.Count == 0)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Produto definido como Kit mas não foram enviados os produtos filhos.";
                    return(crm);
                }
            }
            else
            {
                if (xml.ProdutosFilhos != null && xml.ProdutosFilhos.Count > 0)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Produto definido como Kit = Não, mas foram enviados os produtos filhos.";
                    return(crm);
                }
            }

            if (xml.TipoItem.HasValue)
            {
                crm.TipoItem = xml.TipoItem.Value;
            }

            #endregion

            return(crm);
        }
Esempio n. 11
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem);
            usuarioIntegracao = usuario;
            Estado         estado        = null;
            Moeda          moeda         = null;
            UnidadeNegocio undadeNegocio = null;
            Guid?          produtoId     = null;

            Intelbras.Message.Helper.MSG0086 xml = this.CarregarMensagem <Pollux.MSG0086>(mensagem);
            #region Validações
            //Estado
            if (!String.IsNullOrEmpty(xml.Estado))
            {
                estado = new Servicos.EstadoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.Estado);
                if (estado == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Estado: " + xml.Estado + " não encontrado no Crm.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Estado obrigatório";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
            }
            //Unidade de Negocio
            if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {
                undadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);
                if (undadeNegocio == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "UnidadeNegocio: " + xml.CodigoUnidadeNegocio + " não encontrado no Crm.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoUnidadeNegocio não enviado ou fora do padrão(Guid).";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
            }

            //Moeda


            if (!String.IsNullOrEmpty(xml.Moeda))
            {
                moeda = new Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorNome(xml.Moeda);
                if (moeda == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Moeda: " + xml.Moeda + " não encontrada no Crm.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Moeda não enviado ou fora do padrão(Guid).";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
            }

            //Produto - não obrigatório
            if (!String.IsNullOrEmpty(xml.CodigoProduto))
            {
                Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(xml.CodigoProduto);
                if (produto == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Produto código: " + xml.CodigoProduto + " não encontrado no Crm.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
                }
                else
                {
                    produtoId = produto.ID.Value;
                }
            }
            #endregion

            List <Intelbras.Message.Helper.Entities.ProdutoR1> lsTProdutos = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarPSDPPPSCF(undadeNegocio.ID.Value, moeda.ID.Value, estado.ID.Value, produtoId);

            if (lsTProdutos != null && lsTProdutos.Count > 0)
            {
                retorno.Add("ProdutosItens", lsTProdutos);
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso.";
            }
            else
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Não foram encontrados registros que satisfaçam os critérios de pesquisa.";
            }
            retorno.Add("Resultado", resultadoPersistencia);

            return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno));
        }
Esempio n. 12
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            try
            {
                usuarioIntegracao = usuario;
                ClientePotencial clientePotencialConsulta = null;
                Oportunidade     oportunidadeConsulta     = null;

                var xml = this.CarregarMensagem <Pollux.MSG0269>(mensagem);
                Pollux.Entities.ProjetoItem projetoItem = new Pollux.Entities.ProjetoItem();

                if (!string.IsNullOrEmpty(xml.NumeroProjeto))
                {
                    clientePotencialConsulta = new Servicos.LeadService(this.Organizacao, this.IsOffline).ObterPorNumeroProjeto(xml.NumeroProjeto);
                    if (clientePotencialConsulta != null)
                    {
                        oportunidadeConsulta = new Servicos.RepositoryService().Oportunidade.BuscarPor(clientePotencialConsulta);
                    }

                    if (clientePotencialConsulta == null)
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Valor do parâmetro " + xml.NumeroProjeto + " não encontrado.";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Parâmetro obrigatório para a consulta não enviado.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
                }

                if (oportunidadeConsulta != null)
                {
                    projetoItem.NumeroProjeto          = clientePotencialConsulta.NumeroProjeto;
                    projetoItem.ClassificacaoProjeto   = 993520001;
                    projetoItem.CodigoClientePotencial = oportunidadeConsulta.ClientePotencialOriginador.Id.ToString();
                    projetoItem.CodigoOportunidade     = oportunidadeConsulta.Id.ToString();
                    projetoItem.SituacaoProjeto        = ObterRazaoStatusOportunidade(oportunidadeConsulta);
                    if (oportunidadeConsulta.RevendaIntegrador != null)
                    {
                        projetoItem.CodigoRevenda = oportunidadeConsulta.RevendaIntegrador.Id.ToString();
                        projetoItem.NomeRevenda   = oportunidadeConsulta.RevendaIntegrador.Name;
                    }

                    if (oportunidadeConsulta.Distribuidor != null)
                    {
                        projetoItem.CodigoDistribuidor = oportunidadeConsulta.Distribuidor.Id.ToString();
                        projetoItem.NomeDistribuidor   = oportunidadeConsulta.Distribuidor.Name;
                    }
                    if (oportunidadeConsulta.Executivo != null)
                    {
                        projetoItem.CodigoExecutivo = oportunidadeConsulta.Executivo.Id.ToString();
                        projetoItem.NomeExecutivo   = oportunidadeConsulta.Executivo.Name;
                    }
                    projetoItem.CNPJCliente        = clientePotencialConsulta.Cnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                    projetoItem.RazaoSocial        = clientePotencialConsulta.NomeDaEmpresa;
                    projetoItem.NomeContatoCliente = clientePotencialConsulta.NomeCompletoDoContato;
                    if (!string.IsNullOrEmpty(clientePotencialConsulta.TelefoneComercial))
                    {
                        projetoItem.TelefoneContatoCliente = clientePotencialConsulta.TelefoneComercial;
                    }
                    projetoItem.EmailContatoCliente = clientePotencialConsulta.Email;
                    projetoItem.TipoProjeto         = clientePotencialConsulta.TipoProjeto;
                    if (clientePotencialConsulta.EnvolverEngenharia)
                    {
                        projetoItem.EnvolverEngenharia = 993520000;
                    }
                    else
                    {
                        projetoItem.EnvolverEngenharia = 993520001;
                    }
                    projetoItem.ReceitaEstimada        = clientePotencialConsulta.ValorEstimado;
                    projetoItem.DataPrevisaoFechamento = clientePotencialConsulta.DataEstimada;
                    UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(clientePotencialConsulta.UnidadeNegocio.Id);
                    if (unidadeNegocio != null)
                    {
                        projetoItem.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                        projetoItem.NomeUnidadeNegocio   = unidadeNegocio.Nome;
                    }
                    projetoItem.DataCadastro     = clientePotencialConsulta.DataCriacao;
                    projetoItem.DescricaoProjeto = clientePotencialConsulta.Descricao;
                    if (clientePotencialConsulta.CotacaoEnviada.HasValue)
                    {
                        projetoItem.CotacaoEnviada = clientePotencialConsulta.CotacaoEnviada;
                    }
                    if (oportunidadeConsulta.DataEnvioCotacao.HasValue)
                    {
                        projetoItem.DataEnvioCotacao = oportunidadeConsulta.DataEnvioCotacao;
                    }
                    if (oportunidadeConsulta.TeveReuniao.HasValue)
                    {
                        projetoItem.TeveReuniao = oportunidadeConsulta.TeveReuniao;
                    }
                    if (oportunidadeConsulta.DataReuniao.HasValue)
                    {
                        projetoItem.DataReuniao = oportunidadeConsulta.DataReuniao;
                    }
                    if (oportunidadeConsulta.DataEstimativaAprovacao.HasValue)
                    {
                        projetoItem.DataEstimativaAprovacao = oportunidadeConsulta.DataEstimativaAprovacao;
                    }
                    if (oportunidadeConsulta.PropostaAprovada.HasValue)
                    {
                        projetoItem.PropostaAprovada = oportunidadeConsulta.PropostaAprovada;
                    }
                    if (oportunidadeConsulta.DataAprovacao.HasValue)
                    {
                        projetoItem.DataAprovacao = oportunidadeConsulta.DataAprovacao;
                    }
                    if (oportunidadeConsulta.DataEnvioPedidos.HasValue)
                    {
                        projetoItem.DataEnvioPedidos = oportunidadeConsulta.DataEnvioPedidos;
                    }
                    if (oportunidadeConsulta.PedidosFaturados.HasValue)
                    {
                        projetoItem.PedidosFaturados = oportunidadeConsulta.PedidosFaturados;
                    }
                    Usuario proprietarioOportunidade = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("opportunity", "opportunityid", oportunidadeConsulta.Id);
                    if (proprietarioOportunidade != null)
                    {
                        projetoItem.CodigoExecutivoIntelbras = proprietarioOportunidade.Id.ToString();
                        projetoItem.NomeExecutivoIntelbras   = proprietarioOportunidade.NomeCompleto;
                    }
                }
                else
                {
                    projetoItem.NumeroProjeto          = clientePotencialConsulta.NumeroProjeto;
                    projetoItem.ClassificacaoProjeto   = 993520000;
                    projetoItem.CodigoClientePotencial = clientePotencialConsulta.Id.ToString();
                    projetoItem.SituacaoProjeto        = ObterRazaoStatusClientePotencial(clientePotencialConsulta);
                    if (clientePotencialConsulta.RevendaIntegrador != null)
                    {
                        projetoItem.CodigoRevenda = clientePotencialConsulta.RevendaIntegrador.Id.ToString();
                        projetoItem.NomeRevenda   = clientePotencialConsulta.RevendaIntegrador.Name;
                    }
                    if (clientePotencialConsulta.Distribuidor != null)
                    {
                        projetoItem.CodigoDistribuidor = clientePotencialConsulta.Distribuidor.Id.ToString();
                        projetoItem.NomeDistribuidor   = clientePotencialConsulta.Distribuidor.Name;
                    }
                    if (clientePotencialConsulta.Executivo != null)
                    {
                        projetoItem.CodigoExecutivo = clientePotencialConsulta.Executivo.Id.ToString();
                        projetoItem.NomeExecutivo   = clientePotencialConsulta.Executivo.Name;
                    }
                    projetoItem.CNPJCliente        = clientePotencialConsulta.Cnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                    projetoItem.RazaoSocial        = clientePotencialConsulta.NomeDaEmpresa;
                    projetoItem.NomeContatoCliente = clientePotencialConsulta.NomeCompletoDoContato;
                    if (!string.IsNullOrEmpty(clientePotencialConsulta.TelefoneComercial))
                    {
                        projetoItem.TelefoneContatoCliente = clientePotencialConsulta.TelefoneComercial;
                    }
                    projetoItem.EmailContatoCliente = clientePotencialConsulta.Email;
                    projetoItem.TipoProjeto         = clientePotencialConsulta.TipoProjeto;
                    if (clientePotencialConsulta.EnvolverEngenharia)
                    {
                        projetoItem.EnvolverEngenharia = 993520000;
                    }
                    else
                    {
                        projetoItem.EnvolverEngenharia = 993520001;
                    }
                    projetoItem.ReceitaEstimada        = clientePotencialConsulta.ValorEstimado;
                    projetoItem.DataPrevisaoFechamento = clientePotencialConsulta.DataEstimada;
                    UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(clientePotencialConsulta.UnidadeNegocio.Id);
                    if (unidadeNegocio != null)
                    {
                        projetoItem.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                        projetoItem.NomeUnidadeNegocio   = unidadeNegocio.Nome;
                    }
                    projetoItem.DataCadastro     = clientePotencialConsulta.DataCriacao;
                    projetoItem.DescricaoProjeto = clientePotencialConsulta.Descricao;
                    if (clientePotencialConsulta.CotacaoEnviada.HasValue)
                    {
                        projetoItem.CotacaoEnviada = clientePotencialConsulta.CotacaoEnviada;
                    }

                    Usuario proprietario = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("lead", "leadid", clientePotencialConsulta.Id);
                    if (proprietario != null)
                    {
                        projetoItem.CodigoExecutivoIntelbras = proprietario.Id.ToString();
                        projetoItem.NomeExecutivoIntelbras   = proprietario.NomeCompleto;
                    }

                    if (clientePotencialConsulta.TipoSolucao.HasValue)
                    {
                        projetoItem.TipoSolucao = clientePotencialConsulta.TipoSolucao;
                    }
                }
                #region Endereço
                projetoItem.EnderecoClienteFinal = new Pollux.Entities.Endereco();
                if (!string.IsNullOrEmpty(clientePotencialConsulta.Endereco1CEP))
                {
                    projetoItem.EnderecoClienteFinal.CEP = clientePotencialConsulta.Endereco1CEP.Replace("-", "").PadLeft(8, '0');
                }
                ;
                projetoItem.EnderecoClienteFinal.Logradouro = clientePotencialConsulta.Endereco1Rua;
                projetoItem.EnderecoClienteFinal.Numero     = clientePotencialConsulta.Endereco1Numero;
                if (!string.IsNullOrEmpty(clientePotencialConsulta.Endereco1Complemento))
                {
                    projetoItem.EnderecoClienteFinal.Complemento = clientePotencialConsulta.Endereco1Complemento;
                }
                projetoItem.EnderecoClienteFinal.Bairro = clientePotencialConsulta.Endereco1Bairro;

                if (clientePotencialConsulta.Endereco1Municipioid != null)
                {
                    Municipio municipio = new Servicos.MunicipioServices(this.Organizacao, this.IsOffline).ObterPor(clientePotencialConsulta.Endereco1Municipioid.Id);
                    projetoItem.EnderecoClienteFinal.NomeCidade = municipio.Nome;
                    projetoItem.EnderecoClienteFinal.Cidade     = municipio.ChaveIntegracao;
                }
                if (clientePotencialConsulta.Endereco1Estadoid != null)
                {
                    Estado estado = new Servicos.EstadoServices(this.Organizacao, this.IsOffline).BuscaEstadoPorId(clientePotencialConsulta.Endereco1Estadoid.Id);
                    if (estado != null)
                    {
                        projetoItem.EnderecoClienteFinal.UF     = estado.SiglaUF;
                        projetoItem.EnderecoClienteFinal.Estado = estado.ChaveIntegracao;
                    }
                }
                if (clientePotencialConsulta.Endereco1Pais != null)
                {
                    Pais pais = new Servicos.PaisServices(this.Organizacao, this.IsOffline).BuscaPais(clientePotencialConsulta.Endereco1Pais.Id);
                    if (pais != null)
                    {
                        projetoItem.EnderecoClienteFinal.NomePais = pais.Nome;
                        projetoItem.EnderecoClienteFinal.Pais     = pais.Nome;
                    }
                }

                #endregion

                #region Atividades Projeto
                projetoItem.ListaAtividadesProjeto = new List <Pollux.Entities.AtividadeProjeto>();

                List <Postagem> lstAtividadesClientePotencial = new Servicos.PostagemService(this.Organizacao, this.IsOffline).ListarPorReferenteA(clientePotencialConsulta.Id);

                if (oportunidadeConsulta != null)
                {
                    List <Postagem> lstAtividadesOportunidade = new Servicos.PostagemService(this.Organizacao, this.IsOffline).ListarPorReferenteA(oportunidadeConsulta.Id);

                    if (lstAtividadesOportunidade.Count > 0)
                    {
                        foreach (Postagem postagem in lstAtividadesOportunidade)
                        {
                            Pollux.Entities.AtividadeProjeto atividadeProjeto = new Pollux.Entities.AtividadeProjeto();

                            atividadeProjeto.DataAtividade      = postagem.CriadoEm;
                            atividadeProjeto.CodigoContato      = postagem.UsuarioAtividade.Id.ToString();
                            atividadeProjeto.UsuarioAtividade   = postagem.UsuarioAtividade.Name;
                            atividadeProjeto.DescricaoAtividade = postagem.Texto;

                            projetoItem.ListaAtividadesProjeto.Add(atividadeProjeto);
                        }
                    }
                }
                if (lstAtividadesClientePotencial.Count > 0)
                {
                    foreach (Postagem postagem in lstAtividadesClientePotencial)
                    {
                        Pollux.Entities.AtividadeProjeto atividadeProjeto = new Pollux.Entities.AtividadeProjeto();

                        atividadeProjeto.DataAtividade      = postagem.CriadoEm;
                        atividadeProjeto.CodigoContato      = postagem.UsuarioAtividade.Id.ToString();
                        atividadeProjeto.UsuarioAtividade   = postagem.UsuarioAtividade.Name;
                        atividadeProjeto.DescricaoAtividade = postagem.Texto;

                        projetoItem.ListaAtividadesProjeto.Add(atividadeProjeto);
                    }
                }
                #endregion

                #region Anexos Projeto
                projetoItem.ListaAnexosProjeto = new List <Pollux.Entities.AnexoProjeto>();
                if (oportunidadeConsulta != null)
                {
                    List <DocumentoSharePoint> lstAnexosOportunidade = new Servicos.SharePointSiteService(this.Organizacao, this.IsOffline).ListarPorIdRegistro(oportunidadeConsulta.ID.Value);

                    foreach (DocumentoSharePoint anexo in lstAnexosOportunidade)
                    {
                        try
                        {
                            string urlSite         = ConfigurationManager.GetSettingValue("UrlSiteSharePoint");
                            string urlFolderDetail = "";
                            if (!string.IsNullOrEmpty(anexo.UrlAbsoluta))
                            {
                                urlFolderDetail = anexo.UrlAbsoluta;
                            }
                            else if (!string.IsNullOrEmpty(anexo.UrlRelativa))
                            {
                                urlFolderDetail = urlSite + "/opportunity/" + anexo.UrlRelativa;
                            }
                            using (ClientContext spClientContext = new ClientContext(urlSite))
                            {
                                spClientContext.Credentials = new NetworkCredential(usuarioSharePoint, senhaSharePoint, domain);
                                var rootWeb = spClientContext.Web;

                                Folder pastaPrincipal = rootWeb.GetFolderByServerRelativeUrl(urlFolderDetail);

                                if (pastaPrincipal.Files.AreItemsAvailable)
                                {
                                    spClientContext.Load(pastaPrincipal, fs => fs.Files, p => p.Folders);
                                    spClientContext.ExecuteQuery();
                                    FolderCollection folderCollection = pastaPrincipal.Folders;
                                    FileCollection   fileCollection   = pastaPrincipal.Files;


                                    foreach (var arquivo in fileCollection)
                                    {
                                        Pollux.Entities.AnexoProjeto anexoProjeto = new Pollux.Entities.AnexoProjeto();

                                        anexoProjeto.NomeArquivo    = arquivo.Name;
                                        anexoProjeto.DataArquivo    = arquivo.TimeCreated;
                                        anexoProjeto.UsuarioArquivo = anexo.ModificadoPor.Name;
                                        anexoProjeto.URL            = ObterUrlArquivo(urlSite, arquivo.ServerRelativeUrl);

                                        projetoItem.ListaAnexosProjeto.Add(anexoProjeto);
                                    }
                                }
                            }
                        }
                        catch
                        {
                            continue;
                        }
                    }
                }
                List <DocumentoSharePoint> lstAnexosClientePotencial = new Servicos.SharePointSiteService(this.Organizacao, this.IsOffline).ListarPorIdRegistro(clientePotencialConsulta.ID.Value);

                foreach (DocumentoSharePoint anexo in lstAnexosClientePotencial)
                {
                    try
                    {
                        string urlSite         = ConfigurationManager.GetSettingValue("UrlSiteSharePoint");
                        string urlFolderDetail = "";
                        if (!string.IsNullOrEmpty(anexo.UrlAbsoluta))
                        {
                            urlFolderDetail = anexo.UrlAbsoluta;
                        }
                        else if (!string.IsNullOrEmpty(anexo.UrlRelativa))
                        {
                            urlFolderDetail = urlSite + "/lead/" + anexo.UrlRelativa;
                        }
                        using (ClientContext spClientContext = new ClientContext(urlSite))
                        {
                            spClientContext.Credentials = new NetworkCredential(usuarioSharePoint, senhaSharePoint, domain);
                            var rootWeb = spClientContext.Web;

                            Folder pastaPrincipal = rootWeb.GetFolderByServerRelativeUrl(urlFolderDetail);

                            spClientContext.Load(pastaPrincipal, fs => fs.Files, p => p.Folders);
                            spClientContext.ExecuteQuery();
                            FolderCollection folderCollection = pastaPrincipal.Folders;
                            FileCollection   fileCollection   = pastaPrincipal.Files;

                            foreach (var arquivo in fileCollection)
                            {
                                Pollux.Entities.AnexoProjeto anexoProjeto = new Pollux.Entities.AnexoProjeto();

                                anexoProjeto.NomeArquivo    = arquivo.Name;
                                anexoProjeto.DataArquivo    = arquivo.TimeLastModified;
                                anexoProjeto.UsuarioArquivo = anexo.ModificadoPor.Name;
                                anexoProjeto.URL            = ObterUrlArquivo(urlSite, arquivo.ServerRelativeUrl);

                                projetoItem.ListaAnexosProjeto.Add(anexoProjeto);
                            }
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }
                #endregion

                #region Produtos Projeto

                projetoItem.ListaProdutosProjeto = new List <Pollux.Entities.ProdutoProjeto>();
                List <ProdutoProjeto> lstProdutosClientePotencial = new Servicos.ProdutoProjetoService(this.Organizacao, this.IsOffline).ListarPorClientePotencial(clientePotencialConsulta.Id);

                if (lstProdutosClientePotencial.Count > 0)
                {
                    foreach (ProdutoProjeto produtoCliente in lstProdutosClientePotencial)
                    {
                        Pollux.Entities.ProdutoProjeto produtoProjeto = new Pollux.Entities.ProdutoProjeto();
                        var produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(produtoCliente.Produto.Id);

                        produtoProjeto.CodigoProdutoClientePotencial = produtoCliente.Id.ToString();
                        produtoProjeto.CodigoProduto    = produto.Codigo;
                        produtoProjeto.DescricaoProduto = produto.Nome;
                        produtoProjeto.Quantidade       = produtoCliente.Quantidade;
                        produtoProjeto.PrecoUnitario    = produtoCliente.ValorUnitario;
                        produtoProjeto.ValorTotal       = produtoCliente.ValorTotal;

                        projetoItem.ListaProdutosProjeto.Add(produtoProjeto);
                    }
                }

                #endregion

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

                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
                retorno.Add("ProjetoItem", projetoItem);
                retorno.Add("Resultado", resultadoPersistencia);

                return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
            }
            catch (Exception e)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
            }
        }
Esempio n. 13
0
        // TREINAMENTO
        // CASO DE USO 1 – GERAÇÃO TREINAMENTO E CERTIFICAÇÃO DO CANAL
        public void GeracaoTreinamentoECertificacaoDoCanal()
        {
            Trace       = new SDKore.Helper.Trace("GeraTreinamento");
            mensagemLog = new List <string>();

            InserirLog(DateTime.Now + " - Inicio Geração Treinamento e Certificacao do Canal");

            ParametroGlobal paramGlobal = ParametroGlobal.ListarParamGlobalPorTipoParam((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.DatasTrimestre).FirstOrDefault();

            if (paramGlobal == null)
            {
                throw new ApplicationException("A execução do monitoramento foi interrompida, o parâmetro global não foi encontrado ou está preenchido com valores incorretos.");
            }

            List <Conta> lstContas = ContaService.ListarContasParticipantes();

            InserirLog(DateTime.Now + " - Foram encontrados " + lstContas.Count + " participantes do PCI para processar!");


            foreach (Conta canal in lstContas)
            {
                try
                {
                    InserirLog(string.Empty);
                    InserirLog(DateTime.Now + " -- Canal[" + canal.CodigoMatriz + "]");

                    List <TreinamentoCanal> lstTreinamentoCanal = this.ListarTreinamentoPorCanal(canal.ID.Value);

                    InserirLog(DateTime.Now + " --- Foram encontrados " + lstTreinamentoCanal.Count() + " treinamento do canal!");

                    // Inativa status de treinamentos e certificações
                    this.InativaTreinamentosDeCanal(lstTreinamentoCanal);

                    // lista produtos portifolios
                    List <ProdutoPortfolio> lstProdutoPortifolio = new Servicos.ProdutoService(OrganizationName, isOffline).ProdutosPortfolio(canal, canal.Classificacao.Id, null);

                    InserirLog(DateTime.Now + " --- Foram encontrados " + lstProdutoPortifolio.Count + " produtos do portfolio!");

                    // filtra produto por produto que exija treinamento
                    var lstProdPortExigeTrein = lstProdutoPortifolio.Where(x => x.Product.ExigeTreinamento == true);

                    InserirLog(DateTime.Now + " --- Foram encontrados " + lstProdPortExigeTrein.Count() + " produtos do portfolio que exigem treinamento!");

                    // para cada produto portifolio
                    foreach (var prodPort in lstProdPortExigeTrein)
                    {
                        InserirLog(DateTime.Now + " ---- Produto: " + prodPort.Product.Codigo + " - Unidade Negocio: " + prodPort.Product.UnidadeNegocio.Name);

                        List <CompromissosDoCanal> lstCompCanal = new List <CompromissosDoCanal>();
                        // se forma de apuração de beneficio e compromisso do canal for por filial
                        if (canal.ApuracaoBeneficiosCompromissos.Value == (int)Enum.Conta.ApuracaoDeBeneficiosECompromissos.Por_Filiais ||
                            canal.TipoConta == (int)Enum.Conta.MatrizOuFilial.Matriz)
                        {
                            // compromisso do canal 33
                            lstCompCanal = CompromissosDoCanal.ListarPorCod33EPorMatriz(canal.ID.Value, prodPort.Product.UnidadeNegocio.Id);
                        }
                        else if (canal.ApuracaoBeneficiosCompromissos.Value == (int)Enum.Conta.ApuracaoDeBeneficiosECompromissos.Centralizada_Na_Matriz &&
                                 canal.TipoConta == (int)Enum.Conta.MatrizOuFilial.Filial)
                        {
                            lstCompCanal = CompromissosDoCanal.ListarPorCod33EPorMatriz(canal.ContaPrimaria.Id, prodPort.Product.UnidadeNegocio.Id);
                        }

                        InserirLog(DateTime.Now + " ----- Foram encontrados " + lstCompCanal.Count() + " Compromisso do Canal ");

                        if (lstCompCanal.Count() > 0)
                        {
                            // lista de produto treinamento certificação
                            List <ProdutoTreinamento> lstProdTrei = ProdutoTreinamento.ListarPorProduto(prodPort.Produto.Id);

                            InserirLog(DateTime.Now + " ------ Foram encontrados " + lstProdTrei.Count() + " Produtos do Treinamento ");

                            // Cria TReinamento do canal ou ativa se ja existir
                            foreach (var prodTrei in lstProdTrei)
                            {
                                InserirLog(DateTime.Now + " ------- Produto por Treinamento Certificação: " + prodTrei.Treinamento.Name);

                                this.CriaTreinamentoCanalOuAtiva(prodTrei.Treinamento.Id, prodTrei.Treinamento.Name, canal, lstCompCanal[0].ID);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string mensagem = SDKore.Helper.Error.Handler(ex);
                    InserirLog(DateTime.Now + " - ERRO: " + mensagem);
                }
            }

            InserirLog(string.Empty);
            InserirLog(DateTime.Now + " - Fim GeracaoTreinamentoECertificacaoDoCanal");

            this.EnviaEmailDeLog("Geracao Treinamento e Certificação");
        }
Esempio n. 14
0
        private List <Intelbras.Message.Helper.Entities.ObterSolicitacaoItem> RetornaSolicitacaoItens(Intelbras.CRM2013.Domain.Model.SolicitacaoBeneficio objSolicitacaoBeneficio)
        {
            List <Intelbras.Message.Helper.Entities.ObterSolicitacaoItem> lstSolicitacaoItens = new List <Intelbras.Message.Helper.Entities.ObterSolicitacaoItem>();
            var lstProdSolicitacao = new Servicos.ProdutosdaSolicitacaoService(this.Organizacao, this.IsOffline).ListarPorSolicitacao(objSolicitacaoBeneficio.ID.Value);

            if (lstProdSolicitacao != null && lstProdSolicitacao.Count > 0)
            {
                foreach (var produtoDaSolicitacao in lstProdSolicitacao)
                {
                    Intelbras.Message.Helper.Entities.ObterSolicitacaoItem itemSolicitacao = new Intelbras.Message.Helper.Entities.ObterSolicitacaoItem();

                    itemSolicitacao.CodigoProdutoSolicitacao   = produtoDaSolicitacao.ID.Value.ToString();
                    itemSolicitacao.CodigoSolicitacaoBeneficio = objSolicitacaoBeneficio.ID.Value.ToString();
                    Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(produtoDaSolicitacao.Produto.Id);
                    if (produto != null)
                    {
                        itemSolicitacao.CodigoProduto   = produto.Codigo;
                        itemSolicitacao.NomeProduto     = produto.Nome;
                        itemSolicitacao.CodigoBeneficio = objSolicitacaoBeneficio.BeneficioPrograma.Id.ToString();
                        itemSolicitacao.NomeBeneficio   = objSolicitacaoBeneficio.BeneficioPrograma.Name;
                    }
                    else
                    {
                        throw new Exception("Produto ID :" + produtoDaSolicitacao.ID.Value.ToString() + "não encontrado!");
                    }
                    if (produtoDaSolicitacao.ValorUnitario.HasValue)
                    {
                        itemSolicitacao.ValorUnitario = produtoDaSolicitacao.ValorUnitario.Value;
                    }
                    else
                    {
                        itemSolicitacao.ValorUnitario = 0;
                    }

                    if (produtoDaSolicitacao.QuantidadeSolicitada.HasValue)
                    {
                        itemSolicitacao.Quantidade = Convert.ToInt32(produtoDaSolicitacao.QuantidadeSolicitada.Value);//Mudar Willer
                    }
                    else
                    {
                        itemSolicitacao.Quantidade = 0;
                    }

                    if (produtoDaSolicitacao.ValorTotal.HasValue)
                    {
                        itemSolicitacao.ValorTotal = produtoDaSolicitacao.ValorTotal.Value;
                    }
                    else
                    {
                        itemSolicitacao.ValorTotal = 0;
                    }

                    if (produtoDaSolicitacao.ValorUnitarioAprovado.HasValue)
                    {
                        itemSolicitacao.ValorUnitarioAprovado = produtoDaSolicitacao.ValorUnitarioAprovado.Value;
                    }
                    else
                    {
                        itemSolicitacao.ValorUnitarioAprovado = 0;
                    }

                    if (produtoDaSolicitacao.ValorTotalAprovado.HasValue)
                    {
                        itemSolicitacao.ValorTotalAprovado = produtoDaSolicitacao.ValorTotalAprovado.Value;
                    }
                    else
                    {
                        itemSolicitacao.ValorTotalAprovado = 0;
                    }

                    if (produtoDaSolicitacao.QuantidadeAprovada.HasValue)
                    {
                        itemSolicitacao.QuantidadeAprovado = Convert.ToInt32(produtoDaSolicitacao.QuantidadeAprovada.Value);//Mudar Willer
                    }
                    else
                    {
                        itemSolicitacao.QuantidadeAprovado = 0;
                    }

                    if (produtoDaSolicitacao.Fatura != null)
                    {
                        Fatura fatura = new Servicos.FaturaService(this.Organizacao, this.IsOffline).ObterPor(produtoDaSolicitacao.Fatura.Id);
                        if (fatura != null)
                        {
                            itemSolicitacao.ChaveIntegracaoNotaFiscal = fatura.ChaveIntegracao;
                            itemSolicitacao.NomeNotaFiscal            = fatura.NomeAbreviado;
                        }
                    }

                    itemSolicitacao.Proprietario     = usuarioIntegracao.ID.Value.ToString();
                    itemSolicitacao.NomeProprietario = usuarioIntegracao.Nome;
                    itemSolicitacao.TipoProprietario = "systemuser";

                    if (produtoDaSolicitacao.Estabelecimento != null)
                    {
                        Estabelecimento estabelecimento = new Servicos.EstabelecimentoService(this.Organizacao, this.IsOffline).BuscaEstabelecimento(produtoDaSolicitacao.Estabelecimento.Id);
                        if (estabelecimento != null && estabelecimento.Codigo.HasValue)
                        {
                            itemSolicitacao.NomeEstabelecimento   = estabelecimento.Nome;
                            itemSolicitacao.CodigoEstabelecimento = estabelecimento.Codigo.Value;
                        }
                        else
                        {
                            itemSolicitacao.NomeEstabelecimento   = "N/A";
                            itemSolicitacao.CodigoEstabelecimento = 0;
                        }
                    }
                    else
                    {
                        itemSolicitacao.NomeEstabelecimento   = "N/A";
                        itemSolicitacao.CodigoEstabelecimento = 0;
                    }

                    itemSolicitacao.Situacao = produtoDaSolicitacao.State.Value;

                    if (produtoDaSolicitacao.State.Value.Equals(0))
                    {
                        itemSolicitacao.NomeSituacao = "Ativo";
                    }
                    else if (produtoDaSolicitacao.State.Value.Equals(1))
                    {
                        itemSolicitacao.NomeSituacao = "Inativo";
                    }

                    if (produtoDaSolicitacao.QuantidadeCancelada.HasValue)
                    {
                        itemSolicitacao.QuantidadeCancelada = produtoDaSolicitacao.QuantidadeCancelada.Value;
                    }

                    if (produtoDaSolicitacao.ValorPago.HasValue)
                    {
                        itemSolicitacao.ValorPago = produtoDaSolicitacao.ValorPago.Value;
                    }

                    if (produtoDaSolicitacao.QuantidadeAjustada.HasValue)
                    {
                        itemSolicitacao.QuantidadeAjustada = produtoDaSolicitacao.QuantidadeAjustada.Value;
                    }

                    if (produtoDaSolicitacao.ValorCancelado.HasValue)
                    {
                        itemSolicitacao.ValorCancelado = produtoDaSolicitacao.ValorCancelado.Value;
                    }

                    lstSolicitacaoItens.Add(itemSolicitacao);
                }
            }

            return(lstSolicitacaoItens);
        }