예제 #1
0
        public string Enviar(SolicitacaoBeneficio objModel)
        {
            string resposta;

            Pollux.MSG0155 mensagem = DefinirPropriedadesPlugin(objModel);

            Servicos.Integracao integracao = new Servicos.Integracao(this.Organizacao, this.IsOffline);

            if (integracao.EnviarMensagemBarramento(mensagem.GenerateMessage(true), "1", "1", out resposta))
            {
                Pollux.MSG0155R1 retorno = CarregarMensagem <Pollux.MSG0155R1>(resposta);

                if (!retorno.Resultado.Sucesso)
                {
                    throw new ArgumentException("(CRM) " + retorno.Resultado.Mensagem);
                }
                else
                {
                    if (retorno.SaldoBeneficioCanal != null)
                    {
                        BeneficioDoCanal beneficioCanal = new Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).ObterPor(new Guid(retorno.SaldoBeneficioCanal.CodigoBeneficioCanal));

                        beneficioCanal.VerbaPeriodoAtual                  = retorno.SaldoBeneficioCanal.VerbaCalculada.Value;
                        beneficioCanal.VerbaPeriodosAnteriores            = retorno.SaldoBeneficioCanal.VerbaPeriodoAnterior.Value;
                        beneficioCanal.VerbaBrutaPeriodoAtual             = retorno.SaldoBeneficioCanal.VerbaTotal.Value;
                        beneficioCanal.TotalSolicitacoesAprovadasNaoPagas = retorno.SaldoBeneficioCanal.VerbaEmpenhada.Value;
                        beneficioCanal.VerbaReembolsada = retorno.SaldoBeneficioCanal.VerbaReembolsada.Value;
                        beneficioCanal.VerbaCancelada   = retorno.SaldoBeneficioCanal.VerbaCancelada.Value;
                        beneficioCanal.VerbaAjustada    = retorno.SaldoBeneficioCanal.VerbaAjustada.Value;
                        beneficioCanal.VerbaDisponivel  = retorno.SaldoBeneficioCanal.VerbaDisponivel.Value;

                        new Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).AlterarBeneficioCanal(beneficioCanal);

                        if (objModel.TipoPriceProtection.HasValue && objModel.TipoPriceProtection.Value == (int)Enum.SolicitacaoBeneficio.TipoPriceProtection.Autorizacao)
                        {
                            if (objModel.StatusSolicitacao.HasValue && objModel.StatusSolicitacao.Value == (int)Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.PagamentoPendente)
                            {
                                objModel.StatusSolicitacao = (int?)Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.PagamentoEfetuado;
                            }
                        }
                    }
                }
            }
            else
            {
                Intelbras.Message.Helper.ERR0001 erro001 = CarregarMensagem <Pollux.ERR0001>(resposta);
                throw new ArgumentException("(CRM) " + erro001.GenerateMessage(false));
            }
            return(resposta);
        }
예제 #2
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            try
            {
                var objeto = this.DefinirPropriedades(this.CarregarMensagem <Pollux.MSG0146>(mensagem));
                if (!resultadoPersistencia.Sucesso)
                {
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0146R1>(numeroMensagem, retorno));
                }


                //SolicitacoesItens
                BeneficioDoCanal beneficioDoCanal = new Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).ObterPor(objeto.ID.Value);


                if (beneficioDoCanal == null)
                {
                    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.MSG0146R1>(numeroMensagem, retorno));
                }
                else
                {
                    resultadoPersistencia.Sucesso  = true;
                    resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso.";
                    retorno.Add("BeneficioCanal", this.DefinirRetorno(beneficioDoCanal));
                }
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0146R1>(numeroMensagem, retorno));
            }
            catch (Exception e)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0146R1>(numeroMensagem, retorno));
            }
        }
예제 #3
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            try
            {
                var objeto = this.DefinirPropriedades(this.CarregarMensagem <Pollux.MSG0141>(mensagem));
                if (!resultadoPersistencia.Sucesso)
                {
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0141R1>(numeroMensagem, retorno));
                }

                List <Intelbras.Message.Helper.Entities.Beneficio> lstPolluxBeneficio = new List <Pollux.Entities.Beneficio>();
                //SolicitacoesItens
                List <BeneficioDoCanal> lstBeneficioDoCanal = new Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).ListarPorContaUnidadeNegocio(objeto.Canal.Id, unidadeNegocioId);

                if (lstBeneficioDoCanal != null && lstBeneficioDoCanal.Count > 0)
                {
                    lstPolluxBeneficio = ConverterListaBeneficio(lstBeneficioDoCanal);
                }
                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.MSG0141R1>(numeroMensagem, retorno));
                }

                retorno.Add("BeneficioItens", lstPolluxBeneficio);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0141R1>(numeroMensagem, retorno));
            }
            catch (Exception e)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0141R1>(numeroMensagem, retorno));
            }
        }
예제 #4
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);
        }
예제 #5
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            try
            {
                usuarioIntegracao = usuario;
                BeneficioDoCanal beneficioCanalConsulta = null;
                List <Pollux.Entities.SolicitacaoBeneficio> lstRetorno = new List <Pollux.Entities.SolicitacaoBeneficio>();

                var xml = this.CarregarMensagem <Pollux.MSG0147>(mensagem);
                //BeneficioCanal
                if (!String.IsNullOrEmpty(xml.CodigoBeneficioCanal) && xml.CodigoBeneficioCanal.Length == 36)
                {
                    beneficioCanalConsulta = new Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CodigoBeneficioCanal));
                    if (beneficioCanalConsulta == null)
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Valor do parâmetro " + xml.CodigoBeneficioCanal + " não existe.";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0147R1>(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.MSG0147R1>(numeroMensagem, retorno));
                }
                //Solicitacao Beneficios

                List <SolicitacaoBeneficio> lstSolicitacaoBeneficioCrm = new List <SolicitacaoBeneficio>();
                if (xml.SolicitacaoAjuste.HasValue)
                {
                    lstSolicitacaoBeneficioCrm = new Servicos.SolicitacaoBeneficioService(this.Organizacao, this.IsOffline).ListarPorBeneficioCanalEAjusteSaldo(beneficioCanalConsulta.ID.Value, xml.SolicitacaoAjuste.Value);
                }
                else
                {
                    lstSolicitacaoBeneficioCrm = new Servicos.SolicitacaoBeneficioService(this.Organizacao, this.IsOffline).ListarPorBeneficioCanal(beneficioCanalConsulta.ID.Value);
                }

                if (lstSolicitacaoBeneficioCrm != null && lstSolicitacaoBeneficioCrm.Count > 0)
                {
                    var listaOrdenada = lstSolicitacaoBeneficioCrm.OrderByDescending(t => t.DataCriacao).ToList();
                    lstRetorno = this.DefinirRetorno(listaOrdenada);
                }
                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.MSG0147R1>(numeroMensagem, retorno));
                }
                if (lstRetorno != null && lstRetorno.Count > 0)
                {
                    resultadoPersistencia.Sucesso  = true;
                    resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
                    retorno.Add("SolicitacaoBeneficioItens", 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.MSG0147R1>(numeroMensagem, retorno));
            }
            catch (Exception e)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0147R1>(numeroMensagem, retorno));
            }
        }
예제 #6
0
파일: MSG0148.cs 프로젝트: ertprs/crm_fonte
        public Pollux.Entities.SolicitacaoBeneficioR1 DefinirRetorno(Model.SolicitacaoBeneficio itemCrm)
        {
            Pollux.Entities.SolicitacaoBeneficioR1 solBeneficioPollux = new Pollux.Entities.SolicitacaoBeneficioR1();

            #region Propriedades Crm->Xml

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

            if (itemCrm.UnidadedeNegocio != null)
            {
                UnidadeNegocio unidadeNeg = new UnidadeNegocioService(Organizacao, 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.StatusSolicitacao.HasValue)
            {
                solBeneficioPollux.SituacaoSolicitacaoBeneficio = itemCrm.StatusSolicitacao.Value;
                solBeneficioPollux.NomeSituacaoSolicitacao      = Helper.GetDescription(((Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio)itemCrm.StatusSolicitacao));
            }
            else
            {
                solBeneficioPollux.SituacaoSolicitacaoBeneficio = 0;
                solBeneficioPollux.NomeSituacaoSolicitacao      = "N/A";
            }
            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.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.BeneficioCanal != null)
            {
                BeneficioDoCanal benefCanal = new Servicos.BeneficioDoCanalService(this.Organizacao, this.IsOffline).ObterPor(itemCrm.BeneficioCanal.Id);
                if (benefCanal != null)
                {
                    solBeneficioPollux.CodigoBeneficioCanal = benefCanal.ID.Value.ToString();
                    solBeneficioPollux.NomeBeneficioCanal   = benefCanal.Nome;

                    if (benefCanal.StatusBeneficio != null)
                    {
                        solBeneficioPollux.CodigoStatusBeneficio = benefCanal.StatusBeneficio.Id.ToString();
                        solBeneficioPollux.NomeStatusBeneficio   = benefCanal.StatusBeneficio.Name;
                    }
                    else
                    {
                        solBeneficioPollux.CodigoStatusBeneficio = Guid.Empty.ToString();
                        solBeneficioPollux.NomeStatusBeneficio   = "N/A";
                    }
                }
                else
                {
                    solBeneficioPollux.CodigoBeneficioCanal  = Guid.Empty.ToString();
                    solBeneficioPollux.NomeBeneficioCanal    = "N/A";
                    solBeneficioPollux.CodigoStatusBeneficio = Guid.Empty.ToString();
                    solBeneficioPollux.NomeStatusBeneficio   = "N/A";
                }
            }
            else
            {
                solBeneficioPollux.CodigoBeneficioCanal  = Guid.Empty.ToString();
                solBeneficioPollux.NomeBeneficioCanal    = "N/A";
                solBeneficioPollux.CodigoStatusBeneficio = Guid.Empty.ToString();
                solBeneficioPollux.NomeStatusBeneficio   = "N/A";
            }


            if (itemCrm.BeneficioPrograma != null)
            {
                Beneficio beneficio = new Servicos.BeneficioService(this.Organizacao, this.IsOffline).ObterPor(itemCrm.BeneficioPrograma.Id);
                if (beneficio != null)
                {
                    solBeneficioPollux.CodigoBeneficio = beneficio.ID.Value.ToString();
                    solBeneficioPollux.NomeBeneficio   = beneficio.Nome;

                    if (beneficio.Codigo.HasValue)
                    {
                        solBeneficioPollux.BeneficioCodigo = beneficio.Codigo.Value;
                    }
                    else
                    {
                        solBeneficioPollux.BeneficioCodigo = (int)this.PreencherAtributoVazio("int");
                    }
                }
                else
                {
                    solBeneficioPollux.CodigoBeneficio = Guid.Empty.ToString();
                    solBeneficioPollux.NomeBeneficio   = "N/A";
                    solBeneficioPollux.BeneficioCodigo = (int)this.PreencherAtributoVazio("int");
                }
            }
            else
            {
                solBeneficioPollux.CodigoBeneficioCanal = Guid.Empty.ToString();
                solBeneficioPollux.NomeBeneficioCanal   = "N/A";
            }
            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.Canal != null)
            {
                solBeneficioPollux.CodigoConta = itemCrm.Canal.Id.ToString();
                solBeneficioPollux.NomeConta   = itemCrm.Canal.Name;
            }
            else
            {
                solBeneficioPollux.CodigoConta = Guid.Empty.ToString();
                solBeneficioPollux.NomeConta   = "N/A";
            }

            if (itemCrm.AjusteSaldo.HasValue)
            {
                solBeneficioPollux.SolicitacaoAjuste = itemCrm.AjusteSaldo.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 (itemCrm.ValorAbater.HasValue)
            {
                solBeneficioPollux.ValorAbater = itemCrm.ValorAbater.Value;
            }
            else
            {
                solBeneficioPollux.ValorAbater = 0;
            }

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

            if (itemCrm.TipoSolicitacao != null)
            {
                solBeneficioPollux.CodigoTipoSolicitacao = itemCrm.TipoSolicitacao.Id.ToString();
                solBeneficioPollux.NomeTipoSolicitacao   = itemCrm.TipoSolicitacao.Name;
            }
            else
            {
                solBeneficioPollux.CodigoTipoSolicitacao = Guid.Empty.ToString();
                solBeneficioPollux.NomeTipoSolicitacao   = "N/A";
            }

            if (itemCrm.TipoPriceProtection.HasValue)
            {
                solBeneficioPollux.TipoPriceProtection = itemCrm.TipoPriceProtection;
                if (itemCrm.TipoSolicitacao != null)
                {
                    solBeneficioPollux.NomeTipoPriceProtection = itemCrm.TipoSolicitacao.Name;
                }
            }


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

            solBeneficioPollux.Situacao     = itemCrm.State.Value;
            solBeneficioPollux.NomeSituacao = Helper.GetDescription((Domain.Enum.SolicitacaoBeneficio.State)(itemCrm.State.Value));
            solBeneficioPollux.RazaoStatusSolicitacaoBeneficio = itemCrm.Status.Value;
            if (itemCrm.State.Value == (int)(Domain.Enum.SolicitacaoBeneficio.State.Ativo))
            {
                solBeneficioPollux.NomeRazaoStatusSolicitacao = Helper.GetDescription((Domain.Enum.SolicitacaoBeneficio.RazaoStatusAtivo)(itemCrm.Status.Value));
            }
            else
            {
                solBeneficioPollux.NomeRazaoStatusSolicitacao = Helper.GetDescription((Domain.Enum.SolicitacaoBeneficio.RazaoStatusInativo)(itemCrm.Status.Value));
            }

            solBeneficioPollux.DataCriacaoSolicitacao = itemCrm.DataCriacao.Value;
            solBeneficioPollux.Proprietario           = usuarioIntegracao.ID.Value.ToString();
            solBeneficioPollux.NomeProprietario       = usuarioIntegracao.Nome;
            solBeneficioPollux.TipoProprietario       = "systemuser";


            if (itemCrm.Assistente != null)
            {
                Usuario assistente = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(itemCrm.Assistente.Id);
                if (assistente != null && assistente.CodigoAssistenteComercial.HasValue)
                {
                    solBeneficioPollux.CodigoAssistente = assistente.CodigoAssistenteComercial.Value;
                    solBeneficioPollux.NomeAssistente   = assistente.Nome;
                }
                else
                {
                    solBeneficioPollux.CodigoAssistente = 0;
                    solBeneficioPollux.NomeAssistente   = "N/A";
                }
            }
            else
            {
                solBeneficioPollux.CodigoAssistente = 0;
                solBeneficioPollux.NomeAssistente   = "N/A";
            }


            if (itemCrm.Supervisor != null)
            {
                Usuario supervisor = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(itemCrm.Supervisor.Id);
                if (supervisor != null && !String.IsNullOrEmpty(supervisor.CodigoSupervisorEMS))
                {
                    solBeneficioPollux.CodigoSupervisorEMS = supervisor.CodigoSupervisorEMS;
                    solBeneficioPollux.NomeSupervisor      = supervisor.Nome;
                }
                else
                {
                    solBeneficioPollux.CodigoSupervisorEMS = "N/A";
                    solBeneficioPollux.NomeSupervisor      = "N/A";
                }
            }
            else
            {
                solBeneficioPollux.CodigoSupervisorEMS = "N/A";;
                solBeneficioPollux.NomeSupervisor      = "N/A";
            }

            if (itemCrm.Filial != null)
            {
                solBeneficioPollux.CodigoFilial = itemCrm.Filial.Id.ToString();
                solBeneficioPollux.NomeFilial   = itemCrm.Filial.Name;
            }

            if (itemCrm.StatusPagamento.HasValue)
            {
                solBeneficioPollux.StatusPagamento     = itemCrm.StatusPagamento;
                solBeneficioPollux.NomeStatusPagamento = Helper.GetDescription((Domain.Enum.SolicitacaoBeneficio.StatusPagamento)(itemCrm.StatusPagamento.Value));
            }

            if (itemCrm.SolicitacaoBeneficioPrincipal != null)
            {
                solBeneficioPollux.CodigoSolicitacaoPrincipal = itemCrm.SolicitacaoBeneficioPrincipal.Id.ToString();
                solBeneficioPollux.NomeSolicitacaoPrincipal   = itemCrm.SolicitacaoBeneficioPrincipal.Name;
            }

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

            if (itemCrm.DataValidade.HasValue)
            {
                solBeneficioPollux.DataValidade = itemCrm.DataValidade.Value;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "DataValidade obrigatória, favor verificar registro no CRM.";
                return(solBeneficioPollux);
            }

            if (itemCrm.CondicaoPagamento != null)
            {
                CondicaoPagamento condicaoPagamento = new Servicos.CondicaoPagamentoService(this.Organizacao, this.IsOffline).BuscaCondicaoPagamento(itemCrm.CondicaoPagamento.Id);

                if (condicaoPagamento.Codigo.HasValue)
                {
                    solBeneficioPollux.CodigoCondicaoPagamento = condicaoPagamento.Codigo.Value;
                }

                if (!string.IsNullOrEmpty(condicaoPagamento.Nome))
                {
                    solBeneficioPollux.NomeCondicaoPagamento = condicaoPagamento.Nome;
                }
            }

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

            if (!string.IsNullOrEmpty(itemCrm.TrimestreCompetencia))
            {
                solBeneficioPollux.TrimestreCompetencia = itemCrm.TrimestreCompetencia;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "TrimestreCompetencia obrigatório, favor verificar registro no CRM.";
                return(solBeneficioPollux);
            }

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

            solBeneficioPollux.ObterSolicitacaoItens = this.RetornaSolicitacaoItens(itemCrm);


            //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);


            #endregion

            return(solBeneficioPollux);
        }