Beispiel #1
0
        //persiste o relacionamento com UnidadesRelacionadas
        private bool RelacionaUnidadesNegocio(Intelbras.Message.Helper.MSG0152 xml, SolicitacaoBeneficio solicitacaoBeneficio)
        {
            if (xml.CodigoSolicitacaoBeneficio != null)
            {
                List <SolicitacaoXUnidades> solicitacaoXUnidades = new SolicitacaoXUnidadesService(this.Organizacao, this.IsOffline).ListarPor(new Guid(xml.CodigoSolicitacaoBeneficio));
                foreach (SolicitacaoXUnidades solicitacaoXUnidade in solicitacaoXUnidades)
                {
                    new SolicitacaoXUnidadesService(this.Organizacao, this.IsOffline).Deletar(solicitacaoXUnidade.ID.Value);
                }
            }
            if (xml.UnidadesRelacionadas != null && xml.UnidadesRelacionadas.Count > 0)
            {
                foreach (var unidadesRelacionadas in xml.UnidadesRelacionadas)
                {
                    UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(unidadesRelacionadas.CodigoUnidadeNegocio);

                    if (unidadeNegocio.ID != Guid.Empty)
                    {
                        SolicitacaoXUnidades solicitacaoXUnidadesNovo = new SolicitacaoXUnidades();
                        solicitacaoXUnidadesNovo.Unidades    = new Lookup(unidadeNegocio.ID.Value, "businessunit");
                        solicitacaoXUnidadesNovo.Solicitacao = new Lookup(solicitacaoBeneficio.ID.Value, "itbc_solicitacaodebeneficio");
                        new SolicitacaoXUnidadesService(this.Organizacao, this.IsOffline).Criar(solicitacaoXUnidadesNovo);
                    }
                }
            }
            return(true);
        }
Beispiel #2
0
        private Intelbras.Message.Helper.MSG0122 DefinirPropriedades(CategoriasCanal crm)
        {
            Intelbras.Message.Helper.MSG0122 xml = new Pollux.MSG0122(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), Helper.Truncate(crm.Nome, 40));


            xml.CodigoCategoriaCanal = crm.ID.ToString();
            xml.Nome = crm.Nome;

            UnidadeNegocio unidade = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(crm.UnidadeNegocios.Id);

            if (unidade != null)
            {
                xml.UnidadeNegocio = unidade.ChaveIntegracao;
            }
            xml.Conta = crm.Canal.Id.ToString();
            //Categoria categ = new Servicos.CategoriaService(this.Organizacao, this.IsOffline).IntegracaoBarramento

            xml.Categoria        = crm.Categoria.Id.ToString();
            xml.Classificacao    = crm.Classificacao.Id.ToString();
            xml.SubClassificacao = crm.SubClassificacao.Id.ToString();
            xml.Situacao         = (crm.Status.HasValue ? crm.Status.Value : 0);
            xml.Proprietario     = "259A8E4F-15E9-E311-9420-00155D013D39";
            xml.TipoProprietario = "systemuser";

            return(xml);
        }
Beispiel #3
0
        public BeneficioDoCanal DefinirPropriedades(Intelbras.Message.Helper.MSG0141 xml)
        {
            var crm = new Model.BeneficioDoCanal(this.Organizacao, this.IsOffline);

            if (!String.IsNullOrEmpty(xml.CodigoConta) && xml.CodigoConta.Length == 36)
            {
                Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta));
                if (conta != null)
                {
                    crm.Canal = new Lookup(conta.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Canal - " + xml.CodigoConta + "- não cadastrado no Crm.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Codigo Conta não enviado ou fora do padrão(Guid).";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);
                if (unidadeNegocio == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "UnidadeNegocio: " + xml.CodigoUnidadeNegocio + " não encontrado no Crm.";
                    return(crm);
                }
                unidadeNegocioId = unidadeNegocio.ID.Value;
            }

            if (xml.PassivelSolicitacao.HasValue)
            {
                passivelSolicitacao = xml.PassivelSolicitacao.Value;
            }

            if (xml.PossuiControleContaCorrente.HasValue &&
                System.Enum.IsDefined(typeof(Intelbras.CRM2013.Domain.Enum.BeneficiodoPrograma.ControleContaCorrente), xml.PossuiControleContaCorrente))
            {
                controleConta = xml.PossuiControleContaCorrente;
            }



            return(crm);
        }
Beispiel #4
0
        private List <Pollux.Entities.Segmento> ConverteLista(List <Segmento> LstRegistrosCrm)
        {
            List <Pollux.Entities.Segmento> lstPollux = new List <Pollux.Entities.Segmento>();

            foreach (Segmento item in LstRegistrosCrm)
            {
                Pollux.Entities.Segmento Objeto = new Pollux.Entities.Segmento();

                if (!String.IsNullOrEmpty(item.CodigoSegmento))
                {
                    Objeto.CodigoSegmento = item.CodigoSegmento;
                }

                if (!String.IsNullOrEmpty(item.Nome))
                {
                    Objeto.NomeSegmento = item.Nome;
                }

                if (item.UnidadeNegocios != null)
                {
                    UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(item.UnidadeNegocios.Id);
                    if (unidadeNeg != null)
                    {
                        Objeto.NomeUnidadeNegocio   = unidadeNeg.Nome;
                        Objeto.CodigoUnidadeNegocio = unidadeNeg.ChaveIntegracao;
                    }
                }

                if (item.GerenteResponsavel != null)
                {
                    Objeto.CodigoGerenteResponsavel = item.GerenteResponsavel.Id.ToString();

                    Objeto.NomeGerenteResponsavel = item.GerenteResponsavel.Name;
                }
                if (item.QtdMaximaShowRoom.HasValue)
                {
                    Objeto.QuantidadeMaximaShowRoom = item.QtdMaximaShowRoom;
                }

                lstPollux.Add(Objeto);
            }
            return(lstPollux);
        }
Beispiel #5
0
        public List <Pollux.Entities.CompromissoCanal> DefinirRetorno(List <Model.CompromissosDoCanal> lstCompCanalCrm)
        {
            List <CompromissosDoCanal> lstCompromissosDoCanalCrm = new List <CompromissosDoCanal>();
            List <Pollux.Entities.CompromissoCanal> lstRetorno   = new List <Pollux.Entities.CompromissoCanal>();

            #region Propriedades Crm->Xml
            foreach (var itemCrm in lstCompCanalCrm)
            {
                Pollux.Entities.CompromissoCanal compCanalPollux = new Pollux.Entities.CompromissoCanal();
                if (!String.IsNullOrEmpty(itemCrm.Nome))
                {
                    compCanalPollux.NomeCompromissoCanal = itemCrm.Nome;
                }
                else
                {
                    compCanalPollux.NomeCompromissoCanal = "N/A";
                }
                compCanalPollux.CodigoCompromissoCanal = itemCrm.ID.Value.ToString();
                if (itemCrm.UnidadeDeNegocio != null)
                {
                    UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(itemCrm.UnidadeDeNegocio.Id);
                    if (unidadeNeg != null)
                    {
                        if (!String.IsNullOrEmpty(unidadeNeg.ChaveIntegracao))
                        {
                            compCanalPollux.CodigoUnidadeNegocio = unidadeNeg.ChaveIntegracao;
                        }
                        else
                        {
                            compCanalPollux.CodigoUnidadeNegocio = Guid.Empty.ToString();
                        }
                        if (!String.IsNullOrEmpty(unidadeNeg.Nome))
                        {
                            compCanalPollux.NomeUnidadeNegocio = unidadeNeg.Nome;
                        }
                        else
                        {
                            compCanalPollux.NomeUnidadeNegocio = "N/A";
                        }
                    }

                    else
                    {
                        compCanalPollux.CodigoUnidadeNegocio = Guid.Empty.ToString();
                        compCanalPollux.NomeUnidadeNegocio   = "N/A";
                    }
                }
                else
                {
                    compCanalPollux.CodigoUnidadeNegocio = Guid.Empty.ToString();
                    compCanalPollux.NomeUnidadeNegocio   = "N/A";
                }
                if (itemCrm.StatusCompromisso != null)
                {
                    compCanalPollux.CodigoStatusCompromisso = itemCrm.StatusCompromisso.Id.ToString();
                    compCanalPollux.NomeStatusCompromisso   = itemCrm.StatusCompromisso.Name;
                }
                else
                {
                    compCanalPollux.CodigoStatusCompromisso = Guid.Empty.ToString();
                    compCanalPollux.NomeStatusCompromisso   = "N/A";
                }
                if (itemCrm.CumprirCompromissoEm.HasValue)
                {
                    compCanalPollux.DataCumprimento = itemCrm.CumprirCompromissoEm.Value;
                }

                if (itemCrm.Validade.HasValue)
                {
                    compCanalPollux.DataValidade = itemCrm.Validade.Value;
                }
                lstRetorno.Add(compCanalPollux);
            }
            #endregion
            return(lstRetorno);
        }
Beispiel #6
0
        private Intelbras.Message.Helper.MSG0152 DefinirPropriedadesPlugin(SolicitacaoBeneficio crm)
        {
            Intelbras.Message.Helper.MSG0152 objPollux = new Pollux.MSG0152(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), Helper.Truncate(crm.Nome, 40));

            objPollux.CodigoSolicitacaoBeneficio = crm.ID.ToString();
            objPollux.ValorAprovado = crm.ValorAprovado;

            if (!String.IsNullOrEmpty(crm.Nome))
            {
                objPollux.NomeSolicitacaoBeneficio = crm.Nome;
            }
            else
            {
                throw new ArgumentException("(CRM) Nome SolicitacaoBeneficio não preenchido.");
            }

            if (crm.UnidadedeNegocio != null)
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(crm.UnidadedeNegocio.Id);
                if (unidadeNegocio != null)
                {
                    objPollux.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                }
            }
            else
            {
                throw new ArgumentException("(CRM) UnidadedeNegocio não preenchida.");
            }

            if (crm.ValorAcao.HasValue)
            {
                objPollux.ValorAcao = crm.ValorAcao.Value;
            }

            if (crm.ValorAcao.HasValue == false && crm.AjusteSaldo == false)
            {
                throw new ArgumentException("(CRM) Valor ação é obrigatório!");
            }

            if (!String.IsNullOrEmpty(crm.SituacaoIrregular))
            {
                objPollux.DescricaoSituacaoIrregular = crm.SituacaoIrregular;
            }

            if (crm.AcaoSubsidiadaVmc != null)
            {
                objPollux.CodigoAcaoSubsidiadaVMC = crm.AcaoSubsidiadaVmc.Id.ToString();
            }

            if (crm.AcaoSubsidiadaVmc == null && crm.AjusteSaldo == false)
            {
                throw new ArgumentException("(CRM) AcaoSubsidiadaVmc não preenchida.");
            }

            if (crm.BeneficioCanal != null)
            {
                objPollux.CodigoBeneficioCanal = crm.BeneficioCanal.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) BeneficioCanal não preenchido.");
            }

            if (crm.ValorSolicitado.HasValue)
            {
                objPollux.ValorSolicitado = crm.ValorSolicitado.Value;
            }

            if (!String.IsNullOrEmpty(crm.Descricao))
            {
                objPollux.DescricaoSolicitacao = crm.Descricao;
            }

            if (crm.StatusSolicitacao.HasValue)
            {
                objPollux.SituacaoSolicitacaoBeneficio = crm.StatusSolicitacao.Value;
            }

            if (crm.State.HasValue)
            {
                objPollux.Situacao = crm.State.Value;
            }
            else
            {
                objPollux.Situacao = 0; //ativo
            }
            if (crm.Status.HasValue)
            {
                objPollux.RazaoStatusSolicitacaoBeneficio = crm.Status.Value;
            }

            if (crm.FormaPagamento != null)
            {
                objPollux.CodigoFormaPagamento = crm.FormaPagamento.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) FormaPagamento não preenchida.");
            }


            if (crm.DataIniAcao.HasValue)
            {
                objPollux.DataInicioAcao = crm.DataIniAcao.Value;
            }

            if (crm.DataFimAcao.HasValue)
            {
                objPollux.DataPrevistaRetornoAcao = crm.DataFimAcao.Value.ToLocalTime();
            }

            if (crm.DataFimAcao.HasValue == false && crm.AjusteSaldo == false)
            {
                throw new ArgumentException("(CRM) Data Prevista retorno ação é obrigatório!");
            }

            if (crm.Canal != null)
            {
                objPollux.CodigoConta = crm.Canal.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) Canal não preenchido.");
            }

            if (crm.BeneficioPrograma != null)
            {
                objPollux.CodigoBeneficio = crm.BeneficioPrograma.Id.ToString();

                Beneficio benefProg = new Intelbras.CRM2013.Domain.Servicos.BeneficioService(this.Organizacao, this.IsOffline).ObterPor(crm.BeneficioPrograma.Id);
                if (benefProg != null && benefProg.Codigo.HasValue)
                {
                    objPollux.BeneficioCodigo = benefProg.Codigo.Value;
                }
            }
            else
            {
                throw new ArgumentException("(CRM) BeneficioPrograma não preenchido.");
            }

            if (crm.AjusteSaldo.HasValue)
            {
                objPollux.SolicitacaoAjuste = crm.AjusteSaldo.Value;
            }

            if (crm.ValorAbater.HasValue)
            {
                objPollux.ValorAbater = (decimal)crm.ValorAbater.Value;
            }
            else
            {
                objPollux.ValorAbater = new decimal(0);
            }

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


            if (crm.TipoSolicitacao != null)
            {
                objPollux.CodigoTipoSolicitacao = crm.TipoSolicitacao.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) CodigoTipoSolicitacao não enviado.");
            }

            if (crm.SituacaoIrregularidades.HasValue)
            {
                objPollux.SolicitacaoIrregular = crm.SituacaoIrregularidades.Value;
            }
            objPollux.ProdutoSolicitacaoItens = this.RetornaListaItens(crm.ID.Value);

            //Novos Campos

            if (crm.Assistente == null)
            {
                throw new ArgumentException("(CRM) Assistente Na Solicitação não cadastrado / Campo Obrigatório.");
            }

            Usuario assistente = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(crm.Assistente.Id);

            if (assistente != null)
            {
                objPollux.CodigoAssistente = assistente.CodigoAssistenteComercial.Value;
            }
            else
            {
                throw new ArgumentException("(CRM) Assistente não cadastrado / Obrigatório.");
            }
            Usuario supervisor = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(crm.Supervisor.Id);

            if (supervisor != null)
            {
                objPollux.CodigoSupervisorEMS = supervisor.CodigoSupervisorEMS;
            }
            else
            {
                throw new ArgumentException("(CRM) Supervisor não cadastrado / Obrigatório.");
            }
            if (crm.Filial != null)
            {
                objPollux.CodigoFilial = crm.Filial.Id.ToString();
            }
            if (crm.StatusPagamento.HasValue)
            {
                objPollux.StatusPagamento = crm.StatusPagamento;
            }

            if (crm.ValorPago.HasValue)
            {
                objPollux.ValorPago = crm.ValorPago.Value;
            }

            if (crm.ValorCancelado.HasValue)
            {
                objPollux.ValorCancelado = crm.ValorCancelado.Value;
            }

            if (crm.DataCriacao.HasValue)
            {
                objPollux.DataCriacao = crm.DataCriacao.Value.ToLocalTime();
            }
            else
            {
                objPollux.DataCriacao = DateTime.MinValue;
                //throw new ArgumentException("(CRM) DataCriacao não cadastrada / Obrigatório.");
            }

            if (crm.DataValidade.HasValue)
            {
                objPollux.DataValidade = crm.DataValidade;
            }
            else
            {
                throw new ArgumentException("(CRM) DataValidade não cadastrada / Obrigatório.");
            }

            if (crm.CondicaoPagamento != null)
            {
                CondicaoPagamento condicaoPagamento = new Servicos.CondicaoPagamentoService(this.Organizacao, this.IsOffline).BuscaCondicaoPagamento(crm.CondicaoPagamento.Id);
                if (condicaoPagamento != null)
                {
                    if (condicaoPagamento.Codigo.HasValue)
                    {
                        objPollux.CodigoCondicaoPagamento = condicaoPagamento.Codigo.Value;
                    }
                }
            }

            if (crm.DescartarVerba.HasValue)
            {
                objPollux.DescartarVerba = crm.DescartarVerba.Value;
            }

            if (!string.IsNullOrEmpty(crm.TrimestreCompetencia))
            {
                objPollux.TrimestreCompetencia = crm.TrimestreCompetencia;
            }
            else
            {
                throw new ArgumentException("(CRM) TrimestreCompetencia não cadastrada / Obrigatório.");
            }

            if (crm.FormaCancelamento.HasValue)
            {
                objPollux.FormaCancelamento = crm.FormaCancelamento.Value;
            }

            if (crm.ResultadoPrevisto.HasValue)
            {
                objPollux.ResultadoPrevisto = crm.ResultadoPrevisto.Value;
            }

            if (crm.ResultadoAlcancado.HasValue)
            {
                objPollux.ResultadoAlcancado = crm.ResultadoAlcancado.Value;
            }

            //Busca as unidades de negócio relacionadas ao Benefício do canal
            List <SolicitacaoXUnidades> lstUnidadesBenef = new Servicos.SolicitacaoXUnidadesService(this.Organizacao, this.IsOffline).ListarPor(crm.ID.Value);

            objPollux.UnidadesRelacionadas = this.ConverteLista(lstUnidadesBenef);

            #endregion

            return(objPollux);
        }
Beispiel #7
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            var xml = this.CarregarMensagem <Pollux.MSG0267>(mensagem);

            List <Intelbras.Message.Helper.Entities.ProjetoItem> lstProjetoItem = new List <Pollux.Entities.ProjetoItem>();

            if (string.IsNullOrEmpty(xml.CodigoRevenda) && string.IsNullOrEmpty(xml.CodigoDistribuidor) && string.IsNullOrEmpty(xml.CodigoExecutivo) && string.IsNullOrEmpty(xml.CNPJCliente) && (!xml.SituacaoProjeto.HasValue))
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "É necessário informar ao menos 1 critério de busca para a consulta.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0267R1>(numeroMensagem, retorno));
            }

            string cnpjCliente = "";

            if (!String.IsNullOrEmpty(xml.CNPJCliente))
            {
                cnpjCliente = Servicos.Helper.FormatarCnpj(xml.CNPJCliente);
            }
            else
            {
                cnpjCliente = "";
            }

            List <ClientePotencial> lstProjetos = new Servicos.LeadService(this.Organizacao, this.IsOffline).ListarProjetosPor(xml.CodigoRevenda, xml.CodigoDistribuidor, xml.CodigoExecutivo, cnpjCliente, xml.SituacaoProjeto, xml.CodigoSegmento, xml.CodigoUnidadeNegocio);

            #region Lista

            if (lstProjetos != null && lstProjetos.Count > 0)
            {
                foreach (ClientePotencial crmItem in lstProjetos)
                {
                    Pollux.Entities.ProjetoItem objPollux = new Pollux.Entities.ProjetoItem();

                    Oportunidade Oportunidade = new Servicos.RepositoryService().Oportunidade.BuscarPor(crmItem);

                    objPollux.NumeroProjeto = crmItem.NumeroProjeto;

                    if (Oportunidade != null)
                    {
                        objPollux.ClassificacaoProjeto = 993520001;
                    }
                    else
                    {
                        objPollux.ClassificacaoProjeto = 993520000;
                    }

                    objPollux.CodigoClientePotencial = crmItem.ID.Value.ToString();

                    if (Oportunidade != null)
                    {
                        objPollux.CodigoOportunidade = Oportunidade.ID.Value.ToString();
                        objPollux.SituacaoProjeto    = ObterRazaoStatusOportunidade(Oportunidade);
                    }
                    else
                    {
                        objPollux.SituacaoProjeto = ObterRazaoStatusClientePotencial(crmItem);
                    }

                    if (crmItem.RevendaIntegrador != null)
                    {
                        objPollux.CodigoRevenda = crmItem.RevendaIntegrador.Id.ToString();
                        objPollux.NomeRevenda   = crmItem.RevendaIntegrador.Name;
                    }
                    else
                    {
                        objPollux.CodigoRevenda = string.Empty;
                        objPollux.NomeRevenda   = string.Empty;
                    }

                    if (crmItem.Distribuidor != null)
                    {
                        objPollux.CodigoDistribuidor = crmItem.Distribuidor.Id.ToString();
                        objPollux.NomeDistribuidor   = crmItem.Distribuidor.Name;
                    }

                    if (crmItem.Executivo != null)
                    {
                        objPollux.CodigoExecutivo = crmItem.Executivo.Id.ToString();
                        objPollux.NomeExecutivo   = crmItem.Executivo.Name;
                    }

                    objPollux.CNPJCliente = crmItem.Cnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                    objPollux.RazaoSocial = crmItem.NomeDaEmpresa;
                    if (crmItem.ValorEstimado.HasValue)
                    {
                        objPollux.ReceitaEstimada = crmItem.ValorEstimado;
                    }
                    else
                    {
                        objPollux.ReceitaEstimada = 0;
                    }
                    if (crmItem.DataEstimada != null)
                    {
                        objPollux.DataPrevisaoFechamento = crmItem.DataEstimada.ToLocalTime();
                    }
                    else
                    {
                        objPollux.DataPrevisaoFechamento = null;
                    }

                    if (crmItem.UnidadeNegocio != null)
                    {
                        UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(crmItem.UnidadeNegocio.Id);
                        if (unidadeNegocio != null)
                        {
                            objPollux.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                            objPollux.NomeUnidadeNegocio   = unidadeNegocio.Nome;
                        }
                    }
                    if (crmItem.DataCriacao != null)
                    {
                        objPollux.DataCadastro = crmItem.DataCriacao.ToLocalTime();
                    }
                    else
                    {
                        objPollux.DataCadastro = null;
                    }

                    lstProjetoItem.Add(objPollux);
                }
            }
            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.MSG0267R1>(numeroMensagem, retorno));
            }

            #endregion

            retorno.Add("ProjetosItens", lstProjetoItem);
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0267R1>(numeroMensagem, retorno));
        }
Beispiel #8
0
        public List <Pollux.Entities.SolicitacaoBeneficio> DefinirRetorno(List <Model.SolicitacaoBeneficio> lstSolBeneficioCrm)
        {
            List <Pollux.Entities.SolicitacaoBeneficio> lstRetorno = new List <Pollux.Entities.SolicitacaoBeneficio>();

            #region Propriedades Crm->Xml
            foreach (var itemCrm in lstSolBeneficioCrm)
            {
                var solBeneficioPollux = new Pollux.Entities.SolicitacaoBeneficio();

                if (itemCrm.DataCriacao.HasValue)
                {
                    solBeneficioPollux.DataCriacaoSolicitacao = itemCrm.DataCriacao.Value;
                }
                else
                {
                    solBeneficioPollux.DataCriacaoSolicitacao = DateTime.MinValue;
                }

                solBeneficioPollux.CodigoSolicitacaoBeneficio = itemCrm.ID.Value.ToString();

                if (!String.IsNullOrEmpty(itemCrm.Nome))
                {
                    solBeneficioPollux.NomeSolicitacaoBeneficio = itemCrm.Nome;
                }
                else
                {
                    solBeneficioPollux.NomeSolicitacaoBeneficio = "N/A";
                }

                if (itemCrm.UnidadedeNegocio != null)
                {
                    UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(itemCrm.UnidadedeNegocio.Id);
                    if (unidadeNeg != null)
                    {
                        if (!String.IsNullOrEmpty(unidadeNeg.ChaveIntegracao))
                        {
                            solBeneficioPollux.CodigoUnidadeNegocio = unidadeNeg.ChaveIntegracao;
                        }
                        else
                        {
                            solBeneficioPollux.CodigoUnidadeNegocio = "N/A";
                        }
                        if (!String.IsNullOrEmpty(unidadeNeg.Nome))
                        {
                            solBeneficioPollux.NomeUnidadeNegocio = unidadeNeg.Nome;
                        }
                        else
                        {
                            solBeneficioPollux.NomeUnidadeNegocio = "N/A";
                        }
                    }
                    else
                    {
                        solBeneficioPollux.CodigoUnidadeNegocio = "N/A";
                        solBeneficioPollux.NomeUnidadeNegocio   = "N/A";
                    }
                }
                else
                {
                    solBeneficioPollux.CodigoUnidadeNegocio = "N/A";
                    solBeneficioPollux.NomeUnidadeNegocio   = "N/A";
                }
                if (itemCrm.ValorAcao.HasValue)
                {
                    solBeneficioPollux.ValorAcao = itemCrm.ValorAcao.Value;
                }
                else
                {
                    solBeneficioPollux.ValorAcao = 0;
                }
                if (!String.IsNullOrEmpty(itemCrm.SituacaoIrregular))
                {
                    solBeneficioPollux.DescricaoSituacaoIrregular = itemCrm.SituacaoIrregular;
                }
                if (itemCrm.AcaoSubsidiadaVmc != null)
                {
                    solBeneficioPollux.CodigoAcaoSubsidiadaVMC = itemCrm.AcaoSubsidiadaVmc.Id.ToString();
                    solBeneficioPollux.NomeAcaoSubsidiadaVMC   = itemCrm.AcaoSubsidiadaVmc.Name;
                }

                if (itemCrm.ValorSolicitado.HasValue)
                {
                    solBeneficioPollux.ValorSolicitado = itemCrm.ValorSolicitado.Value;
                }
                else
                {
                    solBeneficioPollux.ValorSolicitado = 0;
                }

                if (itemCrm.Status.HasValue)
                {
                    solBeneficioPollux.SituacaoSolicitacaoBeneficio = itemCrm.StatusSolicitacao.Value;
                }

                if (itemCrm.FormaPagamento != null)
                {
                    solBeneficioPollux.CodigoFormaPagamento = itemCrm.FormaPagamento.Id.ToString();
                    solBeneficioPollux.NomeFormaPagamento   = itemCrm.FormaPagamento.Name;
                }
                else
                {
                    solBeneficioPollux.CodigoFormaPagamento = Guid.Empty.ToString();
                    solBeneficioPollux.NomeFormaPagamento   = "N/A";
                }
                if (itemCrm.ValorAprovado.HasValue)
                {
                    solBeneficioPollux.ValorAprovado = itemCrm.ValorAprovado.Value;
                }

                if (itemCrm.TipoPriceProtection.HasValue)
                {
                    solBeneficioPollux.TipoPriceProtection = itemCrm.TipoPriceProtection.Value;
                    if (itemCrm.StatusCalculoPriceProtection.HasValue)
                    {
                        solBeneficioPollux.StatusCalculoPriceProtection = itemCrm.StatusCalculoPriceProtection.Value;
                    }
                }

                if (itemCrm.ResultadoPrevisto.HasValue)
                {
                    solBeneficioPollux.ResultadoPrevisto = itemCrm.ResultadoPrevisto.Value;
                }

                if (itemCrm.ResultadoAlcancado.HasValue)
                {
                    solBeneficioPollux.ResultadoAlcancado = itemCrm.ResultadoAlcancado.Value;
                }

                if (!string.IsNullOrEmpty(itemCrm.TrimestreCompetencia))
                {
                    solBeneficioPollux.TrimestreCompetencia = itemCrm.TrimestreCompetencia;
                }

                if (!string.IsNullOrEmpty(itemCrm.Descricao))
                {
                    solBeneficioPollux.DescricaoSolicitacao = itemCrm.Descricao;
                }

                if (itemCrm.DataIniAcao.HasValue)
                {
                    solBeneficioPollux.DataInicioAcao = itemCrm.DataIniAcao.Value;
                }

                if (itemCrm.DataFimAcao.HasValue)
                {
                    solBeneficioPollux.DataPrevistaRetornoAcao = itemCrm.DataFimAcao.Value;
                }

                if (itemCrm.ValorPago.HasValue)
                {
                    solBeneficioPollux.ValorPago = itemCrm.ValorPago.Value;
                }
                if (itemCrm.BeneficioPrograma != null)
                {
                    solBeneficioPollux.CodigoBeneficio = itemCrm.BeneficioPrograma.Id.ToString();
                    solBeneficioPollux.NomeBeneficio   = itemCrm.BeneficioPrograma.Name;

                    Beneficio benefProg = new Intelbras.CRM2013.Domain.Servicos.BeneficioService(this.Organizacao, this.IsOffline).ObterPor(itemCrm.BeneficioPrograma.Id);
                    if (benefProg != null && benefProg.Codigo.HasValue)
                    {
                        solBeneficioPollux.BeneficioCodigo = benefProg.Codigo.Value;
                    }
                }
                else
                {
                    solBeneficioPollux.CodigoBeneficio = Guid.Empty.ToString();
                    solBeneficioPollux.NomeBeneficio   = "N/A";
                    solBeneficioPollux.BeneficioCodigo = (int)this.PreencherAtributoVazio("int");
                }
                if (itemCrm.AlteradaParaStockRotation.HasValue)
                {
                    solBeneficioPollux.AlteradaStockRotation = itemCrm.AlteradaParaStockRotation.Value;
                }
                else
                {
                    solBeneficioPollux.AlteradaStockRotation = false;
                }
                if (itemCrm.SituacaoIrregularidades.HasValue)
                {
                    solBeneficioPollux.SolicitacaoIrregular = itemCrm.SituacaoIrregularidades.Value;
                }
                else
                {
                    solBeneficioPollux.SolicitacaoIrregular = false;
                }

                if (itemCrm.AjusteSaldo.HasValue)
                {
                    solBeneficioPollux.SolicitacaoAjuste = itemCrm.AjusteSaldo.Value;
                }

                if (itemCrm.ValorCancelado.HasValue)
                {
                    solBeneficioPollux.ValorCancelado = itemCrm.ValorCancelado.Value;
                }

                //Busca as unidades de negócio relacionadas ao Benefício do canal
                List <SolicitacaoXUnidades> lstUnidadesBenef = new Servicos.SolicitacaoXUnidadesService(this.Organizacao, this.IsOffline).ListarPor(itemCrm.ID.Value);
                solBeneficioPollux.UnidadesRelacionadas = this.ConverteLista(lstUnidadesBenef);

                lstRetorno.Add(solBeneficioPollux);
            }
            #endregion
            return(lstRetorno);
        }
Beispiel #9
0
        public Pollux.Entities.Compromisso DefinirRetorno(Model.CompromissosDoCanal compCanalCrm)
        {
            #region Propriedades Crm->Xml

            Pollux.Entities.Compromisso compCanalPollux = new Pollux.Entities.Compromisso();
            if (!String.IsNullOrEmpty(compCanalCrm.Nome))
            {
                compCanalPollux.NomeCompromissoCanal = compCanalCrm.Nome;
            }
            else
            {
                compCanalPollux.NomeCompromissoCanal = "N/A";
            }
            if (compCanalCrm.UnidadeDeNegocio != null)
            {
                UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(compCanalCrm.UnidadeDeNegocio.Id);
                if (unidadeNeg != null)
                {
                    if (!String.IsNullOrEmpty(unidadeNeg.ChaveIntegracao))
                    {
                        compCanalPollux.CodigoUnidadeNegocio = unidadeNeg.ChaveIntegracao;
                    }
                    else
                    {
                        compCanalPollux.CodigoUnidadeNegocio = "N/A";
                    }
                    if (!String.IsNullOrEmpty(unidadeNeg.Nome))
                    {
                        compCanalPollux.NomeUnidadeNegocio = unidadeNeg.Nome;
                    }
                    else
                    {
                        compCanalPollux.NomeUnidadeNegocio = "N/A";
                    }
                }

                else
                {
                    compCanalPollux.CodigoUnidadeNegocio = Guid.Empty.ToString();
                    compCanalPollux.NomeUnidadeNegocio   = "N/A";
                }
            }
            else
            {
                compCanalPollux.CodigoUnidadeNegocio = Guid.Empty.ToString();
                compCanalPollux.NomeUnidadeNegocio   = "N/A";
            }
            if (compCanalCrm.StatusCompromisso != null)
            {
                compCanalPollux.CodigoStatusCompromisso = compCanalCrm.StatusCompromisso.Id.ToString();
                compCanalPollux.NomeStatusCompromisso   = compCanalCrm.StatusCompromisso.Name;
            }
            else
            {
                compCanalPollux.CodigoStatusCompromisso = Guid.Empty.ToString();
                compCanalPollux.NomeStatusCompromisso   = "N/A";
            }
            if (compCanalCrm.CumprirCompromissoEm.HasValue)
            {
                compCanalPollux.DataCumprimento = compCanalCrm.CumprirCompromissoEm.Value;
            }
            if (compCanalCrm.Validade.HasValue)
            {
                compCanalPollux.DataValidade = compCanalCrm.Validade.Value;
            }


            #endregion
            return(compCanalPollux);
        }
Beispiel #10
0
        public ClientePotencial DefinirPropriedades(Intelbras.Message.Helper.MSG0268 xml)
        {
            var crm = new Model.ClientePotencial(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml

            crm.IntegrarNoPlugin = true;

            if (!String.IsNullOrEmpty(xml.NumeroProjeto))
            {
                ClientePotencial cliente = new Servicos.LeadService(this.Organizacao, this.IsOffline).ObterPorNumeroProjeto(xml.NumeroProjeto);
                if (cliente != null)
                {
                    crm.NumeroProjeto   = xml.NumeroProjeto;
                    crm.StatusValidacao = cliente.StatusValidacao;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "NumeroProjeto informado não existe para ser atualizado.";
                    return(crm);
                }
            }

            if (!String.IsNullOrEmpty(xml.CodigoClientePotencial))
            {
                crm.ID = new Guid(xml.CodigoClientePotencial);
            }
            else
            {
                crm.RazaoStatus = 993520003;

                originadoExtranet = true;
            }

            if (!String.IsNullOrEmpty(xml.CodigoRevenda) && xml.CodigoRevenda.Length == 36)
            {
                crm.RevendaIntegrador = new Lookup(new Guid(xml.CodigoRevenda), "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoRevenda não enviado ou fora do padrão (Guid).";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoDistribuidor) && xml.CodigoDistribuidor.Length == 36)
            {
                crm.Distribuidor = new Lookup(new Guid(xml.CodigoDistribuidor), "");
            }

            Contato executivo = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoExecutivo));
            if (executivo != null)
            {
                crm.Executivo = new Lookup(executivo.ID.Value, "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoExecutivo não encontrado no Crm.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CNPJCliente))
            {
                crm.Cnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCnpj(xml.CNPJCliente);
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CNPJCliente não enviado.";
                return(crm);
            }

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

            if (!String.IsNullOrEmpty(xml.NomeContatoCliente))
            {
                crm.NomeCompletoDoContato = xml.NomeContatoCliente;

                if (xml.NomeContatoCliente.Contains(" "))
                {
                    crm.PrimeiroNomeDoContato = xml.NomeContatoCliente.Substring(0, xml.NomeContatoCliente.IndexOf(' '));
                    crm.SobreNomeDoContato    = xml.NomeContatoCliente.Substring(xml.NomeContatoCliente.IndexOf(' ') + 1, (xml.NomeContatoCliente.Length - xml.NomeContatoCliente.IndexOf(' ') - 1));
                }
                else
                {
                    crm.PrimeiroNomeDoContato = xml.NomeContatoCliente;
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "NomeContatoCliente não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.TelefoneContatoCliente))
            {
                crm.TelefoneComercial = xml.TelefoneContatoCliente;
                crm.TelefoneCelular   = xml.TelefoneContatoCliente;
            }

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

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

            if (xml.EnvolverEngenharia.HasValue)
            {
                if (xml.EnvolverEngenharia.Value == 993520000)
                {
                    crm.EnvolverEngenharia = true;
                }
                else
                {
                    crm.EnvolverEngenharia = false;
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "EnvolverEngenharia não enviado.";
                return(crm);
            }

            if (xml.ReceitaEstimada.HasValue)
            {
                crm.ValorEstimado = (decimal)xml.ReceitaEstimada;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "ReceitaEstimada não enviado.";
                return(crm);
            }

            if (xml.DataPrevisaoFechamento.HasValue)
            {
                crm.DataEstimada = (DateTime)xml.DataPrevisaoFechamento;

                crm.DataProximaInteracao = DateTime.Now.AddDays(30);
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "DataPrevisaoFechamento não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);
                if (unidadeNegocio != null)
                {
                    crm.UnidadeNegocio = new Lookup(unidadeNegocio.Id, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoUnidadeNegocio não enencontrado no CRM.";
                    return(crm);
                }
            }


            if (!String.IsNullOrEmpty(xml.DescricaoProjeto))
            {
                crm.Descricao = xml.DescricaoProjeto;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "DescricaoProjeto não enviado ou fora do padrão (Guid).";
                return(crm);
            }

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

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

            if (xml.PossivelDuplicidade.HasValue)
            {
                crm.PossivelDuplicidade = (bool)xml.PossivelDuplicidade;
            }

            #endregion

            #region Endereco
            crm.Endereco1CEP    = xml.EnderecoClienteFinal.CEP;
            crm.Endereco1Rua    = xml.EnderecoClienteFinal.Logradouro;
            crm.Endereco1Numero = xml.EnderecoClienteFinal.Numero;
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Complemento))
            {
                crm.Endereco1Complemento = xml.EnderecoClienteFinal.Complemento;
            }
            crm.Endereco1Bairro = xml.EnderecoClienteFinal.Bairro;
            //Cidade
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Cidade))
            {
                Municipio cidade = new Intelbras.CRM2013.Domain.Servicos.MunicipioServices(this.Organizacao, this.IsOffline).BuscaCidade(xml.EnderecoClienteFinal.Cidade);

                if (cidade != null && cidade.ID.HasValue)
                {
                    crm.Endereco1Municipioid = new Lookup(cidade.ID.Value, "");
                    crm.Endereco1Municipio   = cidade.Nome;
                }
            }

            //Estado
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Estado))
            {
                Estado estado = new Intelbras.CRM2013.Domain.Servicos.EstadoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.EnderecoClienteFinal.Estado);

                if (estado != null && estado.ID.HasValue)
                {
                    crm.Endereco1Estadoid = new Lookup(estado.ID.Value, "");
                }
            }

            //Pais
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Pais))
            {
                Pais Pais = new Intelbras.CRM2013.Domain.Servicos.PaisServices(this.Organizacao, this.IsOffline).BuscaPais(xml.EnderecoClienteFinal.Pais);

                if (Pais != null && Pais.ID.HasValue)
                {
                    crm.Endereco1Pais = new Lookup(Pais.ID.Value, "");
                }
            }
            #endregion

            return(crm);
        }
Beispiel #11
0
        private Intelbras.Message.Helper.MSG0088 DefinirPropriedades(Product crm)
        {
            Intelbras.Message.Helper.MSG0088 xml = new Pollux.MSG0088(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), Helper.Truncate(crm.Nome, 40));

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

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

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

            if (crm.Nome != null)
            {
                xml.Nome = crm.Nome;
            }

            if (crm.Descricao != null)
            {
                xml.Descricao = crm.Descricao;
            }

            if (crm.PesoEstoque != null)
            {
                xml.PesoEstoque = crm.PesoEstoque;
            }

            xml.Situacao = (crm.Status.HasValue ? crm.Status.Value : (int)Enum.Produto.StateCode.ativo);

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

            if (crm.GrupoEstoque != null)
            {
                GrupoEstoque grpEstoq = new Servicos.GrupoEstoqueService(this.Organizacao, this.IsOffline).ObterPor(crm.GrupoEstoque.Id);
                if (grpEstoq != null && grpEstoq.Codigo.HasValue)
                {
                    xml.GrupoEstoque = grpEstoq.Codigo.Value;
                }
            }

            if (crm.UnidadeNegocio != null)
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(crm.UnidadeNegocio.Id);
                if (unidadeNegocio != null)
                {
                    xml.UnidadeNegocio     = unidadeNegocio.ChaveIntegracao;
                    xml.NomeUnidadeNegocio = unidadeNegocio.Nome;
                }
            }

            if (crm.Segmento != null)
            {
                Model.Segmento segmento = new Servicos.SegmentoService(this.Organizacao, this.IsOffline).ObterPor(crm.Segmento.Id);
                if (segmento != null && !String.IsNullOrEmpty(segmento.CodigoSegmento))
                {
                    xml.Segmento     = segmento.CodigoSegmento;
                    xml.NomeSegmento = segmento.Nome;
                }
            }

            if (crm.FamiliaProduto != null)
            {
                Model.FamiliaProduto familiaProduto = new Servicos.FamiliaProdutoService(this.Organizacao, this.IsOffline).ObterPor(crm.FamiliaProduto.Id);
                if (familiaProduto != null && !String.IsNullOrEmpty(familiaProduto.Codigo))
                {
                    xml.Familia = familiaProduto.Codigo;
                }
            }

            if (crm.SubfamiliaProduto != null)
            {
                SubfamiliaProduto subFamiliaProduto = new Servicos.SubFamiliaProdutoService(this.Organizacao, this.IsOffline).ObterPor(crm.SubfamiliaProduto.Id);
                if (subFamiliaProduto != null && !String.IsNullOrEmpty(subFamiliaProduto.Codigo))
                {
                    xml.SubFamilia = subFamiliaProduto.Codigo;
                }
            }


            if (crm.Origem != null)
            {
                Origem Origem = new Servicos.OrigemService(this.Organizacao, this.IsOffline).ObterPor(crm.Origem.Id);
                if (Origem != null && !String.IsNullOrEmpty(Origem.Codigo))
                {
                    xml.Origem = Origem.Codigo;
                }
            }


            if (crm.UnidadePadrao != null)
            {
                Unidade unidade = new Servicos.UnidadeService(this.Organizacao, this.IsOffline).BuscaPor(crm.UnidadePadrao.Id);
                if (unidade != null && !String.IsNullOrEmpty(unidade.Nome))
                {
                    xml.UnidadeMedida = unidade.Nome;
                }
            }

            if (crm.GrupoUnidades != null)
            {
                GrupoUnidade grupoUnidade = new Servicos.GrupoUnidadeMedidaService(this.Organizacao, this.IsOffline).ObterPor(crm.GrupoUnidades.Id);
                if (grupoUnidade != null)
                {
                    xml.GrupoUnidadeMedida = grupoUnidade.Nome;
                }
            }

            if (crm.FamiliaComercial != null)
            {
                FamiliaComercial familiaComercial = new Servicos.FamiliaComercialService(this.Organizacao, this.IsOffline).ObterPor(crm.FamiliaComercial.Id);
                if (familiaComercial != null && !String.IsNullOrEmpty(familiaComercial.Codigo))
                {
                    xml.FamiliaComercial = familiaComercial.Codigo;
                }
            }

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

            if (crm.NaturezaProduto != null)
            {
                xml.NaturezaProduto = crm.NaturezaProduto.Value;
            }


            if (crm.FamiliaMaterial != null)
            {
                FamiliaMaterial familiaMaterial = new Servicos.FamiliaMaterialService(this.Organizacao, this.IsOffline).ObterPor(crm.FamiliaMaterial.Id);
                if (familiaMaterial != null && !String.IsNullOrEmpty(familiaMaterial.Codigo))
                {
                    xml.FamiliaMaterial = familiaMaterial.Codigo;
                }
            }

            if (crm.FamiliaMaterial != null)
            {
                FamiliaMaterial familiaMaterial = new Servicos.FamiliaMaterialService(this.Organizacao, this.IsOffline).ObterPor(crm.FamiliaMaterial.Id);
                if (familiaMaterial != null && !String.IsNullOrEmpty(familiaMaterial.Codigo))
                {
                    xml.FamiliaMaterial = familiaMaterial.Codigo;
                }
            }


            if (crm.ListaPrecoPadrao != null)
            {
                xml.ListaPreco = crm.ListaPrecoPadrao.Name;
            }

            if (crm.Moeda != null)
            {
                xml.Moeda = crm.Moeda.Name;
            }

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

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

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

            if (crm.NomeFornecedor != null)
            {
                xml.Fabricante = crm.NomeFornecedor;
            }

            if (crm.NumeroPecaFabricante != null)
            {
                xml.NumeroPecaFabricante = crm.NumeroPecaFabricante;
            }

            if (crm.VolumeEstoque != null)
            {
                xml.VolumeEstoque = crm.VolumeEstoque;
            }

            if (crm.Complemento != null)
            {
                xml.ComplementoProduto = crm.Complemento;
            }

            if (crm.Url != null)
            {
                xml.URL = crm.Url;
            }

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

            if (crm.Fornecedor != null)
            {
                xml.Fornecedor = crm.Fornecedor;
            }

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

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

            xml.TemMensagem = crm.TemMensagem;
            if (crm.TemMensagem == true)
            {
                if (crm.Mensagem != null && crm.Mensagem != String.Empty)
                {
                    xml.DescricaoMensagem = crm.Mensagem;
                }
            }
            else
            {
                xml.TemMensagem = false;
            }

            xml.AliquotaIPI = crm.PercentualIPI;

            xml.EAN = crm.EAN;
            xml.NCM = crm.NCM;

            xml.CustoPadrao             = (crm.CustoAtual.HasValue) ? crm.CustoAtual.Value : 0;
            xml.CustoAtual              = crm.CustoAtual;
            xml.BloquearComercializacao = crm.BloquearComercializacao;
            xml.ComercializadoForaKit   = crm.ComercializadoForaKit;
            xml.PoliticaPosVendas       = crm.PoliticaPosVenda;

            if (crm.PoliticaPosVenda != null)
            {
                xml.DescricaoPoliticaPosVendas = DescricaoPoliticaPosVenda(crm.PoliticaPosVenda.Value);
            }

            xml.TempoGarantia                = crm.TempoGarantia;
            xml.EKit                         = crm.EKit;
            xml.PossuiSubstituto             = crm.PossuiSubstituto;
            xml.PassivelSolicitacaoBeneficio = crm.PermitirEmSolBenef;

            xml.Backup           = crm.BackupDistribuidor;
            xml.BackupRevendas   = crm.BackupRevenda;
            xml.ShowRoomRevendas = crm.ShowroomRevenda;


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

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

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

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

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

            if (crm.ProdutoSubstituto != null)
            {
                var produtoSubstituto = RepositoryService.Produto.Retrieve(crm.ProdutoSubstituto.Id, "productnumber");

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

                xml.CodigoProdutoSubstituto = produtoSubstituto.Codigo;
            }

            xml.TipoItem = crm.TipoItem;

            if (crm.LinhaProduto != null)
            {
                LinhaComercial linhaProduto = (new CRM2013.Domain.Servicos.RepositoryService()).LinhaComercial.Retrieve(crm.LinhaProduto.Id);
                if (linhaProduto != null)
                {
                    xml.LinhaProduto     = linhaProduto.Id.ToString();
                    xml.NomeLinhaProduto = linhaProduto.Nome;
                }
            }

            return(xml);
        }
Beispiel #12
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));
        }
Beispiel #13
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));
            }
        }
Beispiel #14
0
        //public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        //{
        //     try
        //    {
        //    //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem);
        //    usuarioIntegracao = usuario;
        //    Intelbras.Message.Helper.MSG0111 xml = this.CarregarMensagem<Pollux.MSG0111>(mensagem);
        //    ParametroGlobal objeto = this.DefinirPropriedades(xml);

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

        //    objeto = new Domain.Servicos.ParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor(tipoParamentroCod, unidadeNegocioId, classificacaoId, categoriaId, nivelPosVendaId, compromissoId, beneficioId,null);

        //    if (objeto == null)
        //    {
        //        resultadoPersistencia.Sucesso = true;
        //        resultadoPersistencia.Mensagem = "Registro não encontrado!";
        //    }
        //    else
        //    {
        //        Pollux.Entities.ParametroGlobal objRetorno = new Pollux.Entities.ParametroGlobal();
        //        objRetorno.TipoDado = objeto.TipoDado;
        //        objRetorno.Valor = objeto.Valor;

        //        retorno.Add("ParametroGlobal", objRetorno);

        //        resultadoPersistencia.Sucesso = true;
        //        resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso";
        //    }

        //    retorno.Add("Resultado", resultadoPersistencia);
        //    return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno);
        //    }
        //     catch (Exception e)
        //     {
        //         resultadoPersistencia.Sucesso = false;
        //         resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e);
        //         retorno.Add("Resultado", resultadoPersistencia);
        //         return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno);
        //         //throw new ArgumentException(e.Message);
        //     }
        //}

        #endregion

        #region Definir Propriedades

        public ParametroGlobal DefinirPropriedades(Intelbras.Message.Helper.MSG0111 xml)
        {
            ParametroGlobal crm = new ParametroGlobal(this.Organizacao, this.IsOffline);

            //Obrigatorio
            TipodeParametroGlobal tipoParamentro = new Servicos.TipodeParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor(xml.TipoParametroGlobal);

            if (tipoParamentro != null && tipoParamentro.Codigo.HasValue)
            {
                tipoParamentroCod = tipoParamentro.Codigo.Value;
                crm.TipoParametro = new Lookup(tipoParamentro.ID.Value, "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "TipoParametroGlobal/Codigo não cadastrada no Crm.";
                return(crm);
            }

            //Não Obrigatório
            if (!String.IsNullOrEmpty(xml.CodigoBeneficio))
            {
                if (xml.CodigoBeneficio.Length == 36)
                {
                    crm.Beneficio = new Lookup((Guid)(TransformaGuid(xml.CodigoBeneficio)), "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador CodigoBeneficio fora do padrão (Guid).";
                    return(crm);
                }
            }

            //Não obrigatorio
            if (!String.IsNullOrEmpty(xml.CodigoClassificacao))
            {
                Classificacao classificacao = new Servicos.ClassificacaoService(this.Organizacao, this.IsOffline).BuscaClassificacao(new Guid(xml.CodigoClassificacao));
                if (classificacao != null)
                {
                    crm.Classificacao = new Lookup(classificacao.ID.Value, "");
                    classificacaoId   = classificacao.ID.Value;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Classificação não cadastrada no Crm.";
                    return(crm);
                }
            }

            //Não obrigatorio
            if (!String.IsNullOrEmpty(xml.CodigoCategoria))
            {
                Categoria categoria = new Servicos.CategoriaService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CodigoCategoria));
                if (categoria != null)
                {
                    crm.Categoria = new Lookup(categoria.ID.Value, "");
                    categoriaId   = categoria.ID.Value;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Categoria não cadastrada no Crm.";
                    return(crm);
                }
            }

            //Não Obrigatorio
            if (!String.IsNullOrEmpty(xml.CodigoCompromisso))
            {
                if (xml.CodigoCompromisso.Length == 36)
                {
                    crm.Compromisso = new Lookup(new Guid(xml.CodigoCompromisso), "");
                    compromissoId   = new Guid(xml.CodigoCompromisso);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador CodigoCompromisso fora do padrão (Guid).";
                    return(crm);
                }
            }


            //Não Obrigatorio
            if (!String.IsNullOrEmpty(xml.CodigoBeneficio))
            {
                if (xml.CodigoBeneficio.Length == 36)
                {
                    crm.Beneficio = new Lookup(new Guid(xml.CodigoBeneficio), "");
                    beneficioId   = new Guid(xml.CodigoBeneficio);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador CodigoBeneficio fora do padrão (Guid).";
                    return(crm);
                }
            }

            //Não Obrigatorio
            if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {
                UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);
                if (unidadeNeg != null)
                {
                    crm.UnidadeNegocio = new Lookup(unidadeNeg.ID.Value, "");
                    unidadeNegocioId   = unidadeNeg.ID.Value;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "UnidadeNegocio não cadastrada no Crm.";
                    return(crm);
                }
            }
            //Não Obrigatorio
            if (!String.IsNullOrEmpty(xml.CodigoNivelPosVenda))
            {
                if (xml.CodigoNivelPosVenda.Length == 36)
                {
                    crm.NivelPosVenda = new Lookup(new Guid(xml.CodigoNivelPosVenda), "");
                    nivelPosVendaId   = new Guid(xml.CodigoNivelPosVenda);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador NivelPosVenda fora do padrão (Guid).";
                    return(crm);
                }
            }

            return(crm);
        }
Beispiel #15
0
        public SolicitacaoBeneficio DefinirPropriedades(Pollux.MSG0155 xml)
        {
            var crm = new SolicitacaoBeneficio(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml

            crm.IntegrarNoPlugin = true;
            crm.ValorAprovado    = xml.ValorAprovado;


            if (!string.IsNullOrEmpty(xml.CodigoSolicitacaoBeneficio))
            {
                if (xml.CodigoSolicitacaoBeneficio.Length == 36)
                {
                    crm.ID = new Guid(xml.CodigoSolicitacaoBeneficio);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoSolicitacaoBeneficio fora do padrão (Guid)!";
                    return(crm);
                }
            }

            string NomeUnidadeNegocio = String.Empty;

            if (!string.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);
                if (unidadeNegocio == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "UnidadeNegocio: " + xml.CodigoUnidadeNegocio + " não encontrado no Crm.";
                    return(crm);
                }
                else
                {
                    crm.UnidadedeNegocio = new Lookup(unidadeNegocio.ID.Value, "");
                    NomeUnidadeNegocio   = unidadeNegocio.Nome;
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoUnidadeNegocio não enviado!";
                return(crm);
            }


            crm.Nome = xml.NomeSolicitacaoBeneficio;
            crm.TipoPriceProtection = xml.TipoPriceProtection;

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

            if (!String.IsNullOrEmpty(xml.CodigoBeneficioCanal) && xml.CodigoBeneficioCanal.Length == 36)
            {
                BeneficioDoCanal beneficioCanal = new Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CodigoBeneficioCanal));
                if (beneficioCanal != null)
                {
                    crm.BeneficioCanal = new Lookup(beneficioCanal.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoBeneficioCanal : " + xml.CodigoBeneficioCanal + " - não cadastrado no Crm.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoBeneficioCanal não Enviado ou fora do padrão(Guid).";
                return(crm);
            }

            crm.ValorSolicitado = xml.ValorSolicitado;

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

            if (System.Enum.IsDefined(typeof(Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio), xml.SituacaoSolicitacaoBeneficio))
            {
                crm.StatusSolicitacao = xml.SituacaoSolicitacaoBeneficio;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "SituacaoSolicitacaoBeneficio não cadastrado no Crm(PickList).";
                return(crm);
            }
            if (xml.Situacao == 0 || xml.Situacao == 1)
            {
                crm.State = xml.Situacao;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Situacao fora do padrão(0 ou 1).";
                return(crm);
            }


            if (crm.State.Value.Equals((int)Enum.SolicitacaoBeneficio.State.Ativo))
            {
                if (System.Enum.IsDefined(typeof(Enum.SolicitacaoBeneficio.RazaoStatusAtivo), xml.RazaoStatusSolicitacaoBeneficio))
                {
                    crm.Status = xml.RazaoStatusSolicitacaoBeneficio;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "RazaoStatusSolicitacaoBeneficio não cadastrado para Situação Ativo.";
                    return(crm);
                }
            }
            else if (crm.State.Value.Equals((int)Enum.SolicitacaoBeneficio.State.Inativo))
            {
                if (System.Enum.IsDefined(typeof(Enum.SolicitacaoBeneficio.RazaoStatusInativo), xml.RazaoStatusSolicitacaoBeneficio))
                {
                    crm.Status = xml.RazaoStatusSolicitacaoBeneficio;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "RazaoStatusSolicitacaoBeneficio não cadastrado para Situação Inativo.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Situacao fora do padrão.";
                return(crm);
            }



            if (!String.IsNullOrEmpty(xml.CodigoFormaPagamento) && xml.CodigoFormaPagamento.Length == 36)
            {
                FormaPagamento formaPagamento = new Servicos.FormaPagamentoService(this.Organizacao, this.IsOffline).ObterPorGuid(new Guid(xml.CodigoFormaPagamento));
                if (formaPagamento != null)
                {
                    crm.FormaPagamento = new Lookup(formaPagamento.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoFormaPagamento : " + xml.CodigoFormaPagamento + " - não cadastrado no Crm.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoFormaPagamento não Enviado ou fora do padrão(Guid).";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoConta) && xml.CodigoConta.Length == 36)
            {
                Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta));
                if (conta != null)
                {
                    crm.Canal = new Lookup(conta.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoConta : " + xml.CodigoConta + " - não cadastrado no Crm.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoConta não Enviado ou fora do padrão(Guid).";
                return(crm);
            }



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

            crm.AlteradaParaStockRotation = xml.AlteradaStockRotation;

            crm.SituacaoIrregularidades = xml.SolicitacaoIrregular;

            if (!String.IsNullOrEmpty(xml.CodigoTipoSolicitacao) && xml.CodigoTipoSolicitacao.Length == 36)
            {
                crm.TipoSolicitacao = new Lookup(new Guid(xml.CodigoTipoSolicitacao), "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoTipoSolicitacao não Enviado ou fora do padrão(Guid).";
                return(crm);
            }
            //Novos campos - 1409

            crm.AjusteSaldo = xml.SolicitacaoAjuste;

            crm.ValorAbater = xml.ValorAbater;

            Usuario objAssitente = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscaPorCodigoAssistente(xml.CodigoAssistente.Value);
            if (objAssitente != null)
            {
                crm.Assistente = new Lookup(objAssitente.ID.Value, "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Assistente não cadastrado no Crm.";
                return(crm);
            }

            Usuario supervisorEms = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscaPorCodigoSupervisorEMS(xml.CodigoSupervisorEMS);
            if (supervisorEms != null)
            {
                crm.Supervisor = new Lookup(supervisorEms.ID.Value, "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Supervisor não cadastrado no Crm.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoFilial))
            {
                crm.Filial = new Lookup(new Guid(xml.CodigoFilial), "");
            }
            else
            {
                crm.AddNullProperty("Filial");
            }

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

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

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

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

            if (xml.DataValidade.HasValue)
            {
                crm.DataValidade = xml.DataValidade.Value;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "DataValidade não informado favor verificar integração.";
                return(crm);
            }

            if (xml.CodigoCondicaoPagamento.HasValue)
            {
                CondicaoPagamento condicaoPagamento = new Servicos.CondicaoPagamentoService(this.Organizacao, this.IsOffline).BuscaCondicaoPagamentoPorCodigo(xml.CodigoCondicaoPagamento.Value);
                if (condicaoPagamento != null)
                {
                    crm.CondicaoPagamento = new Lookup(condicaoPagamento.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoCondicaoPagamento informado não registrado no CRM, favor verificar.";
                    return(crm);
                }
            }

            crm.DescartarVerba = xml.DescartarVerba;

            if (!string.IsNullOrEmpty(xml.TrimestreCompetencia))
            {
                crm.TrimestreCompetencia = xml.TrimestreCompetencia;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "TrimestreCompetencia não informado favor verificar integração.";
                return(crm);
            }

            crm.FormaCancelamento = xml.FormaCancelamento;

            if (xml.CodigoSolicitacaoPrincipal != null)
            {
                crm.SolicitacaoBeneficioPrincipal = new Lookup(new Guid(xml.CodigoSolicitacaoPrincipal), "");
            }

            #endregion

            crm.IntegradoEm       = DateTime.Now;
            crm.IntegradoPor      = usuarioIntegracao.NomeCompleto;
            crm.UsuarioIntegracao = xml.LoginUsuario;

            return(crm);
        }
Beispiel #16
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));
            }
        }
Beispiel #17
0
        private Intelbras.Message.Helper.MSG0155 DefinirPropriedadesPlugin(SolicitacaoBeneficio crm)
        {
            Intelbras.Message.Helper.MSG0155 objPollux = new Pollux.MSG0155(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), crm.Nome.Truncate(40));

            objPollux.CodigoSolicitacaoBeneficio = crm.ID.ToString();
            objPollux.ValorAprovado = crm.ValorAprovado;

            if (!String.IsNullOrEmpty(crm.Nome))
            {
                objPollux.NomeSolicitacaoBeneficio = crm.Nome;
            }
            else
            {
                throw new ArgumentException("(CRM) Nome SolicitacaoBeneficio não preenchido.");
            }

            if (crm.UnidadedeNegocio != null)
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(crm.UnidadedeNegocio.Id);
                if (unidadeNegocio != null)
                {
                    objPollux.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                }
            }
            else
            {
                throw new ArgumentException("(CRM) UnidadedeNegocio não preenchida.");
            }

            if (!String.IsNullOrEmpty(crm.Nome))
            {
                objPollux.DescricaoSituacaoIrregular = crm.SituacaoIrregular;
            }


            if (crm.BeneficioCanal != null)
            {
                objPollux.CodigoBeneficioCanal = crm.BeneficioCanal.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) BeneficioCanal não preenchido.");
            }

            if (crm.ValorSolicitado.HasValue)
            {
                objPollux.ValorSolicitado = crm.ValorSolicitado.Value;
            }


            objPollux.DescricaoSolicitacao = crm.Descricao;

            if (crm.StatusSolicitacao.HasValue)
            {
                objPollux.SituacaoSolicitacaoBeneficio = crm.StatusSolicitacao.Value;
            }

            if (crm.State.HasValue)
            {
                objPollux.Situacao = crm.State.Value;
            }

            if (crm.Status.HasValue)
            {
                objPollux.RazaoStatusSolicitacaoBeneficio = crm.Status.Value;
            }

            if (crm.FormaPagamento != null)
            {
                objPollux.CodigoFormaPagamento = crm.FormaPagamento.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) FormaPagamento não preenchida.");
            }

            if (crm.Canal != null)
            {
                objPollux.CodigoConta = crm.Canal.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) Canal não preenchido.");
            }

            if (crm.BeneficioPrograma != null)
            {
                objPollux.CodigoBeneficio = crm.BeneficioPrograma.Id.ToString();

                Beneficio benefProg = new Intelbras.CRM2013.Domain.Servicos.BeneficioService(this.Organizacao, this.IsOffline).ObterPor(crm.BeneficioPrograma.Id);
                if (benefProg != null && benefProg.Codigo.HasValue)
                {
                    objPollux.BeneficioCodigo = benefProg.Codigo.Value;
                }
            }
            else
            {
                throw new ArgumentException("(CRM) BeneficioPrograma não preenchido.");
            }

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


            if (crm.TipoSolicitacao != null)
            {
                objPollux.CodigoTipoSolicitacao = crm.TipoSolicitacao.Id.ToString();
            }
            else
            {
                throw new ArgumentException("(CRM) CodigoTipoSolicitacao não enviado.");
            }

            if (crm.SituacaoIrregularidades.HasValue)
            {
                objPollux.SolicitacaoIrregular = crm.SituacaoIrregularidades.Value;
            }
            objPollux.ProdutoSolicitacaoItens = this.RetornaListaItens(crm.ID.Value);
            if (crm.AlteradaParaStockRotation.HasValue)
            {
                objPollux.AlteradaStockRotation = crm.AlteradaParaStockRotation.Value;
            }
            else
            {
                objPollux.AlteradaStockRotation = false;
            }

            if (crm.TipoPriceProtection.HasValue)
            {
                objPollux.TipoPriceProtection = crm.TipoPriceProtection.Value;
            }
            else
            {
                objPollux.TipoPriceProtection = (int)Enum.SolicitacaoBeneficio.TipoPriceProtection.Consumo;
            }
            //Novos Campos

            if (crm.AjusteSaldo.HasValue)
            {
                objPollux.SolicitacaoAjuste = crm.AjusteSaldo.Value;
            }

            if (crm.StatusCalculoPriceProtection.HasValue)
            {
                objPollux.StatusCalculoPriceProtection = crm.StatusCalculoPriceProtection.Value;
            }

            if (crm.ValorAbater.HasValue)
            {
                objPollux.ValorAbater = crm.ValorAbater.Value;
            }
            else
            {
                objPollux.ValorAbater = new decimal(0);
            }

            Usuario assistente = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(crm.Assistente.Id);

            if (assistente != null)
            {
                objPollux.CodigoAssistente = assistente.CodigoAssistenteComercial.Value;
            }
            else
            {
                throw new ApplicationException("(CRM) Assistente não cadastrado / Obrigatório.");
            }

            Usuario supervisor = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(crm.Supervisor.Id);

            if (supervisor != null)
            {
                objPollux.CodigoSupervisorEMS = supervisor.CodigoSupervisorEMS;
            }
            else
            {
                throw new ApplicationException("(CRM) Supervisor não cadastrado / Obrigatório.");
            }

            if (crm.Filial != null)
            {
                objPollux.CodigoFilial = crm.Filial.Id.ToString();
            }
            if (crm.StatusPagamento.HasValue)
            {
                objPollux.StatusPagamento = crm.StatusPagamento;
            }

            if (crm.ValorPago.HasValue)
            {
                objPollux.ValorPago = crm.ValorPago.Value;
            }

            if (crm.ValorCancelado.HasValue)
            {
                objPollux.ValorCancelado = crm.ValorCancelado.Value;
            }

            if (crm.DataCriacao.HasValue)
            {
                objPollux.DataCriacao = crm.DataCriacao.Value.ToLocalTime();
            }
            else
            {
                throw new ArgumentException("(CRM) DataCriacao não cadastrada / Obrigatório.");
            }

            if (crm.DataValidade.HasValue)
            {
                objPollux.DataValidade = crm.DataValidade;
            }
            else
            {
                throw new ArgumentException("(CRM) DataValidade não cadastrada / Obrigatório.");
            }

            if (crm.CondicaoPagamento != null)
            {
                CondicaoPagamento condicaoPagamento = new Servicos.CondicaoPagamentoService(this.Organizacao, this.IsOffline).BuscaCondicaoPagamento(crm.CondicaoPagamento.Id);
                if (condicaoPagamento != null)
                {
                    if (condicaoPagamento.Codigo.HasValue)
                    {
                        objPollux.CodigoCondicaoPagamento = condicaoPagamento.Codigo.Value;
                    }
                }
            }

            if (crm.DescartarVerba.HasValue)
            {
                objPollux.DescartarVerba = crm.DescartarVerba.Value;
            }

            if (!string.IsNullOrEmpty(crm.TrimestreCompetencia))
            {
                objPollux.TrimestreCompetencia = crm.TrimestreCompetencia;
            }
            else
            {
                throw new ArgumentException("(CRM) TrimestreCompetencia não cadastrada / Obrigatório.");
            }

            objPollux.FormaCancelamento = crm.FormaCancelamento;

            return(objPollux);
        }
Beispiel #18
0
        public Pollux.MSG0143 DefinirPropriedades(PortfoliodoKeyAccountRepresentantes objModel)
        {
            #region Propriedades Crm->Xml

            Pollux.MSG0143 msg0143      = new Pollux.MSG0143(itb.RetornaSistema(itb.Sistema.CRM), Helper.Truncate(objModel.Nome, 40));
            string         nomeUnid     = String.Empty;
            string         nomeSegmento = String.Empty;

            msg0143.CodigoPortfolioRepresentante = objModel.ID.Value.ToString();
            if (objModel.KeyAccountRepresentante != null)
            {
                Contato representante = new Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(objModel.KeyAccountRepresentante.Id);
                if (representante != null && representante.CodigoRepresentante.Length > 0)
                {
                    msg0143.CodigoRepresentante = Convert.ToInt32(representante.CodigoRepresentante);
                }
                else
                {
                    throw new Exception("Representante não localizado/sem código representante.");
                }
            }
            if (objModel.UnidadedeNegocio != null)
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(objModel.UnidadedeNegocio.Id);
                if (unidadeNegocio != null)
                {
                    msg0143.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                    nomeUnid = unidadeNegocio.Nome;
                }
                else
                {
                    throw new Exception("Unidade de negocio não localizada ou sem nome.");
                }
            }
            if (objModel.AssistentedeAdministracaodeVendas != null)
            {
                Usuario usuario = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(objModel.AssistentedeAdministracaodeVendas.Id);
                if (usuario != null && usuario.CodigoAssistenteComercial != null)
                {
                    msg0143.CodigoAssistente    = usuario.CodigoAssistenteComercial.Value;
                    msg0143.CodigoAssistenteCRM = usuario.ID.Value.ToString();
                }

                else
                {
                    throw new Exception("Usuario sem código de assistente comercial.");
                }
            }
            if (objModel.Segmento != null)
            {
                Segmento segmento = new Servicos.SegmentoService(this.Organizacao, this.IsOffline).ObterPor(objModel.Segmento.Id);
                if (segmento != null)
                {
                    msg0143.CodigoSegmento = segmento.CodigoSegmento;
                    nomeSegmento           = segmento.Nome;
                }
                else
                {
                    throw new Exception("Segmento não localizado.");
                }
            }
            else
            {
                msg0143.CodigoSegmento = "0000";
                nomeSegmento           = "";
            }

            if (objModel.SupervisordeVendas != null)
            {
                Usuario supervisor = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(objModel.SupervisordeVendas.Id);
                if (supervisor != null)
                {
                    msg0143.CodigoSupervisor = supervisor.ID.Value.ToString();
                    if (!String.IsNullOrEmpty(supervisor.CodigoSupervisorEMS))
                    {
                        msg0143.CodigoSupervisorEMS = supervisor.CodigoSupervisorEMS;
                    }
                    else
                    {
                        throw new Exception("Codigo Supervisor EMS não preenchido.");
                    }
                }
                else
                {
                    throw new Exception("Supervisor não localizado.");
                }
            }

            if (objModel.Status.HasValue)
            {
                if (objModel.Status.Value == 1)
                {
                    msg0143.Situacao = 0;
                }
                else
                {
                    msg0143.Situacao = 1;
                }
            }

            if (!String.IsNullOrEmpty(objModel.Nome))
            {
                string nometmp = objModel.Nome + " - " + nomeUnid + " - " + nomeSegmento;
                if (nometmp.Length > 99)
                {
                    msg0143.Nome = nometmp.Substring(0, 99);
                }
                else
                {
                    msg0143.Nome = nometmp;
                }
            }
            else
            {
                throw new Exception("PortfolioRepresentante sem nome.");
            }

            #endregion

            return(msg0143);
        }