Ejemplo n.º 1
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            usuarioIntegracao = usuario;
            var objCanais = this.CarregarMensagem <Pollux.MSG0120>(mensagem);

            List <Conta> lstConta = this.GerarListaConta(objCanais.CanaisItem);

            if (!resultadoPersistencia.Sucesso)
            {
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0120R1>(numeroMensagem, retorno));
            }
            if (lstConta != null && lstConta.Count > 0)
            {
                foreach (var objConta in lstConta)
                {
                    var objContaRet = new Servicos.ContaService(this.Organizacao, this.IsOffline).Persistir(objConta);

                    if (objContaRet == null)
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Erro de persistência!";
                        return(CriarMensagemRetorno <Pollux.MSG0120R1>(numeroMensagem, retorno));
                    }
                }
            }

            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0120R1>(numeroMensagem, retorno));
        }
Ejemplo n.º 2
0
        public RelacionamentoCanal DefinirPropriedades(Intelbras.Message.Helper.MSG0124 xml)
        {
            var crm = new RelacionamentoCanal(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml


            if (!String.IsNullOrEmpty(xml.Canal))
            {
                Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.Canal));
                if (conta != null)
                {
                    crm.Canal = new Lookup(conta.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Canal não encontrado no CRM.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Identificador do canal não enviado.";
                return(crm);
            }
            #endregion

            return(crm);
        }
Ejemplo n.º 3
0
        private List <Conta> GerarListaConta(List <Pollux.Entities.Canal> lstCanais)
        {
            List <Conta> lstContas = new List <Conta>();

            foreach (var item in lstCanais)
            {
                if (!String.IsNullOrEmpty(item.CodigoConta) &&
                    item.CodigoConta.Length == 36)
                {
                    Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(item.CodigoConta));

                    if (conta != null)
                    {
                        conta.DiasAtraso = item.NumeroDiasAtraso;
                        lstContas.Add(conta);
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Canal : " + item.CodigoConta + " - não cadastrado no Crm.";
                        return(null);
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Identificador do Canal não enviado/fora do padrão (Guid).";
                    return(null);
                }
            }
            return(lstContas);
        }
Ejemplo n.º 4
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            usuarioIntegracao = usuario;
            Conta contaConsulta = null;
            List <Pollux.Entities.CompromissoCanal> lstRetorno = new List <Pollux.Entities.CompromissoCanal>();

            var xml = this.CarregarMensagem <Pollux.MSG0144>(mensagem);

            //Conta
            if (!String.IsNullOrEmpty(xml.CodigoConta) && xml.CodigoConta.Length == 36)
            {
                contaConsulta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta));
                if (contaConsulta == null)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Valor do parâmetro " + xml.CodigoConta + " não existe.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0144R1>(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.MSG0144R1>(numeroMensagem, retorno));
            }
            //Compromissos Canal
            List <CompromissosDoCanal> lstCompromissosCanalCrm = new Servicos.CompromissosDoCanalService(this.Organizacao, this.IsOffline).ListarCompromissoCanalPorConta(contaConsulta.ID.Value);

            if (lstCompromissosCanalCrm != null && lstCompromissosCanalCrm.Count > 0)
            {
                lstRetorno = this.DefinirRetorno(lstCompromissosCanalCrm);
            }
            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.MSG0144R1>(numeroMensagem, retorno));
            }
            if (lstRetorno != null && lstRetorno.Count > 0)
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
                retorno.Add("CompromissoCanalItens", lstRetorno);
                retorno.Add("Resultado", resultadoPersistencia);
            }
            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.MSG0144R1>(numeroMensagem, retorno));
        }
Ejemplo n.º 5
0
        public Revenda CriarRevendaSellout(string xml)
        {
            Revenda revenda = DeserializeRevenda(xml);
            Conta   conta   = this.SelloutParseConta(revenda);

            var msg0164 = new MSG0164(this.Organizacao, this.IsOffline);

            conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).CriarRevendaSellout(conta, msg0164);

            return(SelloutParseRevenda(conta));
        }
Ejemplo n.º 6
0
        public Conta DefinirPropriedades(Pollux.MSG0183 xml)
        {
            if (string.IsNullOrEmpty(xml.CpfCnpjCodEstrangeiro))
            {
                throw new ArgumentException("(CRM) O campo 'CpfCnpjCodEstrangeiro' é obrigatório!");
            }

            Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaContaPorCpfCnpj(xml.CpfCnpjCodEstrangeiro);

            return(conta);
        }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
0
        public List <Conta> Executar(string revendaIDnoCRM, string numeroMensagem)
        {
            List <Conta> contas = new List <Conta>();

            try
            {
                //Pollux.MSG0180 msg = new Pollux.MSG0180(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.SellOut), revendaIDnoCRM);
                Pollux.MSG0180 msg = new Pollux.MSG0180(Enum.Sistemas.RetornaSistema(Enum.Sistemas.Sistema.CRM), revendaIDnoCRM);
                msg.CodigoConta = revendaIDnoCRM;
                msg.DataInicio  = DateTime.Now.AddDays(-9999);
                msg.DataFim     = DateTime.Now;

                string xml = msg.GenerateMessage();

                Servicos.Integracao integ = new Servicos.Integracao(this.Organizacao, this.IsOffline);
                string retMsg             = String.Empty;
                if (integ.EnviarMensagemBarramento(xml, "1", "1", out retMsg))
                {
                    var ret = CarregarMensagem <Pollux.MSG0180R1>(retMsg);
                    if (!ret.Resultado.Sucesso)
                    {
                        throw new ArgumentException("(CRM) " + ret.Resultado.Mensagem);
                    }
                    else
                    {
                        foreach (Pollux.Entities.Distribuidor dist in ret.Distribuidores)
                        {
                            Conta conta = new Servicos.ContaService(Organizacao, IsOffline).BuscaConta(new Guid(dist.CodigoDistribuidor));
                            conta.DataUltimoSelloutRevenda = dist.DataUltimoSellOut;
                            contas.Add(conta);
                        }
                    }
                }
                else
                {
                    var erro001 = CarregarMensagem <Pollux.ERR0001>(retMsg);
                    throw new ArgumentException("(CRM) " + string.Concat(erro001.GenerateMessage(false)));
                }
            }
            catch (Exception ex)
            {
                resultadoPersistencia.Mensagem = Error.Handler(ex);
                resultadoPersistencia.Sucesso  = false;
            }

            return(contas);
        }
Ejemplo n.º 9
0
        private List <Pollux.Entities.Ocorrencia> GerarListaOcorrencias(List <Ocorrencia> lstOcorrencia)
        {
            List <Pollux.Entities.Ocorrencia> lstOcorrenciaItem = new List <Pollux.Entities.Ocorrencia>();

            foreach (var item in lstOcorrencia)
            {
                Pollux.Entities.Ocorrencia ocorrencia = new Pollux.Entities.Ocorrencia();

                ocorrencia.TituloOcorrencia          = item.Nome;
                ocorrencia.NumeroOcorrencia          = item.Numero;
                ocorrencia.DescricaoStatusOcorrencia = this.getStatusOcorrencia((int)item.StatusCode); //item.StatusDaOcorrencia.ToString();
                ocorrencia.DescricaoTipoOcorrencia   = this.getTipodeOcorrencia((int)item.TipoDeOcorrencia);
                ocorrencia.DataHoraAbertura          = item.DataOrigem;
                ocorrencia.DataHoraConclusao         = item.DataDeConclusao;
                ocorrencia.ResumoOcorrencia          = item.ResumoDaOcorrencia;
                ocorrencia.NomeProprietario          = "";
                ocorrencia.NomeCliente = "";

                if (item.ClienteId != null)
                {
                    Model.Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(item.ClienteId.Id);
                    if (conta != null)
                    {
                        ocorrencia.NomeCliente = conta.RazaoSocial;
                    }
                }

                Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("incident", "incidentid", item.ID.Value);
                if (proprietario != null)
                {
                    ocorrencia.NomeProprietario = proprietario.NomeCompleto;
                }

                lstOcorrenciaItem.Add(ocorrencia);
            }

            return(lstOcorrenciaItem);
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
0
        public List <PrecoProduto> DefinirPropriedadesLista(Intelbras.Message.Helper.MSG0101 xml)
        {
            List <PrecoProduto> lstPrecoProduto = new List <PrecoProduto>();

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

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

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

            Guid contaProduto = new Guid();

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

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

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

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

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

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

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

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

                precoProduto.ContaId = contaProduto;
                decimal qtd = 0;

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


            if (!String.IsNullOrEmpty(xml.CodigoConta))
            {
                Conta objetoConta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta));
                List <Pollux.Entities.Documento> lstDocumento = new List <Pollux.Entities.Documento>();

                if (objetoConta.ID.HasValue)
                {
                    List <DocumentoCanal> lstDocCanal = new Servicos.DocumentoCanalService(this.Organizacao, this.IsOffline).ListarDocumentoCanal(objetoConta.ID.Value);

                    if (lstDocCanal == null || lstDocCanal.Count == 0)
                    {
                        resultadoConsulta.Sucesso  = true;
                        resultadoConsulta.Mensagem = "Não há documentos para este canal.";
                        retorno.Add("Resultado", resultadoConsulta);
                        return(CriarMensagemRetorno <Pollux.MSG0077R1>(numeroMensagem, retorno));
                    }

                    foreach (DocumentoCanal item in lstDocCanal)
                    {
                        Pollux.Entities.Documento documento = new Pollux.Entities.Documento();
                        documento.NomeDocumento   = item.Nome;
                        documento.CodigoDocumento = item.ID.Value.ToString();
                        //documento.DescricaoSituacao = item.Status.ToString();
                        if (item.TipoDocumento != null)
                        {
                            documento.CodigoTipoDocumento = item.TipoDocumento.Id.ToString();
                            documento.NomeTipoDocumento   = item.TipoDocumento.Name;
                        }
                        if (item.Validade != null)
                        {
                            documento.DataValidade = (DateTime)item.Validade;
                        }
                        if (item.Compromisso != null)
                        {
                            documento.CodigoCompromisso = item.Compromisso.Id.ToString();
                            documento.NomeCompromisso   = item.Compromisso.Name;
                        }
                        if (item.Status.HasValue)
                        {
                            documento.Situacao = (int)item.Status;
                        }
                        lstDocumento.Add(documento);
                    }
                    resultadoConsulta.Sucesso = true;
                    retorno.Add("DocumentosItens", lstDocumento);
                    retorno.Add("Resultado", resultadoConsulta);
                    return(CriarMensagemRetorno <Pollux.MSG0077R1>(numeroMensagem, retorno));
                }
                else
                {
                    resultadoConsulta.Sucesso  = true;
                    resultadoConsulta.Mensagem = "Conta/Canal não encontrado.";
                    retorno.Add("Resultado", resultadoConsulta);
                    return(CriarMensagemRetorno <Pollux.MSG0077R1>(numeroMensagem, retorno));
                }
            }
            else
            {
                resultadoConsulta.Sucesso  = false;
                resultadoConsulta.Mensagem = "Identificador do Canal não enviado.";
                retorno.Add("Resultado", resultadoConsulta);
                return(CriarMensagemRetorno <Pollux.MSG0077R1>(numeroMensagem, retorno));
            }
        }
Ejemplo n.º 13
0
        public string Executar(string mensagem, string numeroMensagem, Usuario usuario)
        {
            var xml = this.CarregarMensagem <Pollux.MSG0293>(mensagem);
            List <Intelbras.Message.Helper.Entities.PerguntaItem> lstQuestionarioRespostaItem = new List <Pollux.Entities.PerguntaItem>();

            //Consultas
            List <QuestionarioPergunta> lstQuestionarioPergunta = new Servicos.QuestionarioPerguntaServices(this.Organizacao, this.IsOffline).ListarQuestionarioPerguntaPorQuestionario(xml.Questionario);
            List <QuestionarioResposta> lstRespostasConta       = new Servicos.QuestionarioRespostaServices(this.Organizacao, this.IsOffline).ObterREspostaConta(xml.Conta, true);

            string strMarcas = "";

            #region Marcas
            if (xml.Conta != null)
            {
                Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.Conta));
                if (conta.MarcasEnviadas != null)
                {
                    strMarcas = conta.MarcasEnviadas;
                }
            }
            #endregion

            #region Lista
            if (lstQuestionarioPergunta != null && lstQuestionarioPergunta.Count > 0)
            {
                foreach (QuestionarioPergunta crmItem in lstQuestionarioPergunta)
                {
                    Pollux.Entities.PerguntaItem objPollux = new Pollux.Entities.PerguntaItem();
                    objPollux.OpcoesResposta = new List <Pollux.Entities.OpcaoRespostaItem>();
                    QuestionarioGrupoPergunta grupo = new Servicos.QuestionarioGrupoPerguntaServices(this.Organizacao, this.IsOffline).ListarGrupoById(crmItem.Grupo.Id.ToString());

                    objPollux.CodigoPergunta = crmItem.ID.ToString();
                    objPollux.NomePergunta   = crmItem.Nome;
                    objPollux.TipoPergunta   = crmItem.TipoPergunta;
                    objPollux.OrdemPergunta  = crmItem.Ordem;
                    objPollux.PesoPergunta   = crmItem.Peso;

                    if (grupo != null)
                    {
                        objPollux.NomeGrupo  = grupo.Nome;
                        objPollux.GrupoOrdem = grupo.Ordem;
                    }

                    List <QuestionarioOpcao> lstOpcoesResposta = new Servicos.QuestionarioOpcaoServices(this.Organizacao, this.IsOffline).ListarQuestionarioOpcaoPor((Guid)crmItem.ID);

                    foreach (QuestionarioOpcao opcaoItem in lstOpcoesResposta)
                    {
                        Pollux.Entities.OpcaoRespostaItem objPolluxOpcao = new Pollux.Entities.OpcaoRespostaItem();

                        objPolluxOpcao.CodigoOpcao       = opcaoItem.ID.ToString();
                        objPolluxOpcao.NomeOpcao         = opcaoItem.Nome;
                        objPolluxOpcao.OrdemOpcao        = opcaoItem.Ordem;
                        objPolluxOpcao.PontuacaoResposta = opcaoItem.Pontuacao;

                        var selecionada = lstRespostasConta.Where(s => s.QuestionarioOpcao.Id == opcaoItem.ID).FirstOrDefault <QuestionarioResposta>();

                        if (selecionada != null)
                        {
                            objPolluxOpcao.ValorResposta = selecionada.Valor;
                            objPolluxOpcao.Selecionada   = true;
                        }
                        else
                        {
                            objPolluxOpcao.ValorResposta = 0;
                            objPolluxOpcao.Selecionada   = false;
                        }

                        objPollux.OpcoesResposta.Add(objPolluxOpcao);
                    }

                    lstQuestionarioRespostaItem.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.MSG0293R1>(numeroMensagem, retorno));
            }

            #endregion
            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso";
            retorno.Add("Marcas", strMarcas);
            retorno.Add("Perguntas", lstQuestionarioRespostaItem);
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0293R1>(numeroMensagem, retorno));
        }
Ejemplo n.º 14
0
        public AcessoExtranetContato DefinirPropriedades(Intelbras.Message.Helper.MSG0119 xml)
        {
            if (!xml.AceitouTermoDeUso.HasValue)
            {
                throw new ArgumentException("(CRM) Identificador do AceitouTermoDeUso não encontrado!");
            }

            var crm = new AcessoExtranetContato(this.Organizacao, this.IsOffline)
            {
                IntegrarNoPlugin       = true,
                Status                 = xml.Situacao,
                Nome                   = xml.Nome,
                UsuarioAceitouTermoUso = xml.AceitouTermoDeUso,
                DataAceiteTermo        = xml.DataAceiteTermoDeUso
            };

            #region Propriedades Crm->Xml

            if (!string.IsNullOrEmpty(xml.CodigoAcesso))
            {
                crm.ID = new Guid(xml.CodigoAcesso);
            }

            if (!string.IsNullOrEmpty(xml.TipoAcesso))
            {
                crm.TipoAcesso = new Lookup(new Guid(xml.TipoAcesso), "");
            }
            else
            {
                throw new ArgumentException("(CRM) Identificador do Tipo de Acesso não encontrado!");
            }

            if (!string.IsNullOrEmpty(xml.Contato))
            {
                Contato contato = new ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.Contato));
                if (contato != null)
                {
                    crm.Contato = new Lookup(contato.ID.Value, "");
                }
                else
                {
                    throw new ArgumentException("(CRM) Contato não cadastrado no Crm!");
                }
            }
            else
            {
                throw new ArgumentException("(CRM) Identificador do Contato não encontrado!");
            }

            if (!string.IsNullOrEmpty(xml.PerfilAcesso))
            {
                crm.AcessoExtranetid = new Lookup(new Guid(xml.PerfilAcesso), "");
            }
            else
            {
                throw new ArgumentException("(CRM) Identificador Perfil Acesso Extranet não encontrado!");
            }

            if (!string.IsNullOrEmpty(xml.Conta))
            {
                Conta contaObj = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.Conta));
                if (contaObj != null)
                {
                    crm.Canal = new Lookup(contaObj.ID.Value, "");
                }
                else
                {
                    throw new ArgumentException("(CRM) Conta não cadastrada no Crm!");
                }
            }



            if (xml.DataValidade.HasValue)
            {
                crm.Validade = xml.DataValidade;
            }
            else
            {
                throw new ArgumentException("(CRM) Identificador da Data Validade não encontrado!");
            }

            #endregion

            return(crm);
        }
Ejemplo n.º 15
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));
            }
        }
Ejemplo n.º 16
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            var xml = this.CarregarMensagem <Pollux.MSG0278>(mensagem);

            List <Intelbras.Message.Helper.Entities.OcorrenciaItem> lstOcorrenciaItem = new List <Pollux.Entities.OcorrenciaItem>();

            if (!xml.DataInicial.HasValue || !xml.DataFinal.HasValue)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "É necessário informar os 2 critérios de busca para a consulta.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0278R1>(numeroMensagem, retorno));
            }

            List <Ocorrencia> lstOcorrencias = new Servicos.OcorrenciaService(this.Organizacao, this.IsOffline).ListarOcorrenciasPorDataCriacao(xml.DataInicial, xml.DataFinal);

            #region Lista

            if (lstOcorrencias != null && lstOcorrencias.Count > 0)
            {
                foreach (Ocorrencia crmItem in lstOcorrencias)
                {
                    Pollux.Entities.OcorrenciaItem objPollux = new Pollux.Entities.OcorrenciaItem();

                    //Atualizar o campo que atualiza o portal operações e suporte quando a flag estiver setado como true
                    if (crmItem.AtualizarOperacoesSuporte == true)
                    {
                        crmItem.AtualizarOperacoesSuporte = false;
                        crmItem.Atualizar();
                    }

                    objPollux.CodigoOcorrencia = crmItem.ID.Value.ToString();
                    if (!string.IsNullOrEmpty(crmItem.Numero))
                    {
                        objPollux.NumeroOcorrencia = crmItem.Numero;
                    }
                    if (crmItem.RazaoStatus.HasValue)
                    {
                        objPollux.StatusOcorrencia = crmItem.RazaoStatus;
                    }
                    if (crmItem.PrioridadeValue.HasValue)
                    {
                        objPollux.PrioridadeOcorrencia = crmItem.PrioridadeValue;
                    }
                    if (crmItem.TipoDeOcorrencia.HasValue)
                    {
                        objPollux.TipoOcorrencia = crmItem.TipoDeOcorrencia;
                    }
                    if (!string.IsNullOrEmpty(crmItem.DefeitoAlegado))
                    {
                        objPollux.DefeitoAlegado = crmItem.DefeitoAlegado;
                    }
                    if (!string.IsNullOrEmpty(crmItem.AtividadeExecutada))
                    {
                        objPollux.AtividadeExecutada = crmItem.AtividadeExecutada;
                    }
                    if (!string.IsNullOrEmpty(crmItem.Anexo))
                    {
                        objPollux.Observacao = crmItem.Anexo;
                    }
                    if (crmItem.DataPrevistaParaVisita.HasValue)
                    {
                        objPollux.DataHoraPrevistaVisita = crmItem.DataPrevistaParaVisita.Value.ToLocalTime();
                    }
                    if (crmItem.DataInicioTecnico.HasValue)
                    {
                        objPollux.DataHoraChegadaTecnico = crmItem.DataInicioTecnico.Value.ToLocalTime();
                    }
                    if (crmItem.DataSaidaTecnico.HasValue)
                    {
                        objPollux.DataHoraSaidaTecnico = crmItem.DataSaidaTecnico.Value.ToLocalTime();
                    }
                    if (crmItem.DataDeConclusao.HasValue)
                    {
                        objPollux.DataHoraConclusao = crmItem.DataDeConclusao.Value.ToLocalTime();
                    }
                    if (crmItem.DataEscalacao.HasValue)
                    {
                        objPollux.DataHoraEscalacao = crmItem.DataEscalacao.Value.ToLocalTime();
                    }
                    if (crmItem.DataOrigem.HasValue)
                    {
                        objPollux.DataHoraAbertura = crmItem.DataOrigem.Value.ToLocalTime();
                    }
                    if (crmItem.ModificadoEm.HasValue)
                    {
                        objPollux.DataHoraModificacao = crmItem.ModificadoEm.Value.ToLocalTime();
                    }
                    if (crmItem.DataSLA.HasValue)
                    {
                        objPollux.TempoSLA = crmItem.DataSLA.Value.ToLocalTime();
                    }
                    if (!string.IsNullOrEmpty(crmItem.OsCliente))
                    {
                        objPollux.OrdemServicoCliente = crmItem.OsCliente;
                    }
                    if (crmItem.SolicitanteId != null)
                    {
                        objPollux.CodigoContato = crmItem.SolicitanteId.Id.ToString();
                    }

                    Usuario proprietario = new Domain.Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("incident", "incidentid", crmItem.ID.Value);

                    if (proprietario != null)
                    {
                        objPollux.NomeProprietario = proprietario.NomeCompleto;
                    }
                    if (crmItem.ClienteId != null)
                    {
                        objPollux.CodigoConta = crmItem.ClienteId.Id.ToString();
                        Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(crmItem.ClienteId.Id);
                        if (conta != null)
                        {
                            objPollux.RazaoSocialConta = conta.RazaoSocial;

                            if (conta.CpfCnpj != null)
                            {
                                objPollux.CNPJConta = conta.CpfCnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                            }
                        }
                    }
                    if (crmItem.EmpresaExecutanteId != null)
                    {
                        objPollux.CodigoEmpresaExecutante = crmItem.EmpresaExecutanteId.Id.ToString();
                        Conta empresaexecutante = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(crmItem.EmpresaExecutanteId.Id);
                        if (empresaexecutante != null)
                        {
                            objPollux.RazaoSocialEmpresaExecutante = crmItem.EmpresaExecutante.RazaoSocial;
                            if (objPollux.CNPJEmpresaExecutante != null)
                            {
                                objPollux.CNPJEmpresaExecutante = crmItem.EmpresaExecutante.CpfCnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                            }
                        }
                    }
                    if (crmItem.TecnicoDaVisitaId != null)
                    {
                        objPollux.TecnicoResponsavel = crmItem.TecnicoDaVisitaId.Id.ToString();
                        Contato tecnico = new Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(crmItem.TecnicoDaVisitaId.Id);
                        if (tecnico != null)
                        {
                            objPollux.NomeContato = tecnico.NomeCompleto;
                            if (!string.IsNullOrEmpty(crmItem.TecnicoDaVisita.CpfCnpj))
                            {
                                objPollux.CPF = crmItem.TecnicoDaVisita.CpfCnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                            }
                            if (!string.IsNullOrEmpty(crmItem.TecnicoDaVisita.IMEI))
                            {
                                objPollux.IMEI = crmItem.TecnicoDaVisita.IMEI;
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(crmItem.ContatoVisita))
                    {
                        objPollux.ContatoVisita = crmItem.ContatoVisita;
                    }
                    if (crmItem.MarcaId != null)
                    {
                        objPollux.CodigoMarca = crmItem.MarcaId.Id.ToString();
                        objPollux.NomeMarca   = crmItem.MarcaId.Name;
                    }
                    if (crmItem.ModeloId != null)
                    {
                        objPollux.CodigoModelo = crmItem.ModeloId.Id.ToString();
                        objPollux.NomeModelo   = crmItem.ModeloId.Name;
                    }

                    if (!string.IsNullOrEmpty(crmItem.Rua))
                    {
                        objPollux.Logradouro = crmItem.Rua;
                    }

                    if (!string.IsNullOrEmpty(crmItem.Bairro))
                    {
                        objPollux.Bairro = crmItem.Bairro;
                    }

                    if (!string.IsNullOrEmpty(crmItem.Cidade))
                    {
                        objPollux.NomeCidade = crmItem.Cidade;
                    }

                    if (!string.IsNullOrEmpty(crmItem.ProdutosDoCliente))
                    {
                        objPollux.NumeroSerieProduto = crmItem.ProdutosDoCliente.Trim();
                    }

                    lstOcorrenciaItem.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.MSG0278R1>(numeroMensagem, retorno));
            }

            #endregion
            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
            retorno.Add("OcorrenciaItens", lstOcorrenciaItem);
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0278R1>(numeroMensagem, retorno));
        }