public List <Pollux.Entities.SolicitacaoBeneficio> DefinirRetorno(List <Model.SolicitacaoBeneficio> lstSolBeneficioCrm) { List <Pollux.Entities.SolicitacaoBeneficio> lstRetorno = new List <Pollux.Entities.SolicitacaoBeneficio>(); #region Propriedades Crm->Xml foreach (var itemCrm in lstSolBeneficioCrm) { var solBeneficioPollux = new Pollux.Entities.SolicitacaoBeneficio(); if (itemCrm.DataCriacao.HasValue) { solBeneficioPollux.DataCriacaoSolicitacao = itemCrm.DataCriacao.Value; } else { solBeneficioPollux.DataCriacaoSolicitacao = DateTime.MinValue; } solBeneficioPollux.CodigoSolicitacaoBeneficio = itemCrm.ID.Value.ToString(); if (!String.IsNullOrEmpty(itemCrm.Nome)) { solBeneficioPollux.NomeSolicitacaoBeneficio = itemCrm.Nome; } else { solBeneficioPollux.NomeSolicitacaoBeneficio = "N/A"; } if (itemCrm.UnidadedeNegocio != null) { UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(itemCrm.UnidadedeNegocio.Id); if (unidadeNeg != null) { if (!String.IsNullOrEmpty(unidadeNeg.ChaveIntegracao)) { solBeneficioPollux.CodigoUnidadeNegocio = unidadeNeg.ChaveIntegracao; } else { solBeneficioPollux.CodigoUnidadeNegocio = "N/A"; } if (!String.IsNullOrEmpty(unidadeNeg.Nome)) { solBeneficioPollux.NomeUnidadeNegocio = unidadeNeg.Nome; } else { solBeneficioPollux.NomeUnidadeNegocio = "N/A"; } } else { solBeneficioPollux.CodigoUnidadeNegocio = "N/A"; solBeneficioPollux.NomeUnidadeNegocio = "N/A"; } } else { solBeneficioPollux.CodigoUnidadeNegocio = "N/A"; solBeneficioPollux.NomeUnidadeNegocio = "N/A"; } if (itemCrm.ValorAcao.HasValue) { solBeneficioPollux.ValorAcao = itemCrm.ValorAcao.Value; } else { solBeneficioPollux.ValorAcao = 0; } if (!String.IsNullOrEmpty(itemCrm.SituacaoIrregular)) { solBeneficioPollux.DescricaoSituacaoIrregular = itemCrm.SituacaoIrregular; } if (itemCrm.AcaoSubsidiadaVmc != null) { solBeneficioPollux.CodigoAcaoSubsidiadaVMC = itemCrm.AcaoSubsidiadaVmc.Id.ToString(); solBeneficioPollux.NomeAcaoSubsidiadaVMC = itemCrm.AcaoSubsidiadaVmc.Name; } if (itemCrm.ValorSolicitado.HasValue) { solBeneficioPollux.ValorSolicitado = itemCrm.ValorSolicitado.Value; } else { solBeneficioPollux.ValorSolicitado = 0; } if (itemCrm.Status.HasValue) { solBeneficioPollux.SituacaoSolicitacaoBeneficio = itemCrm.StatusSolicitacao.Value; } if (itemCrm.FormaPagamento != null) { solBeneficioPollux.CodigoFormaPagamento = itemCrm.FormaPagamento.Id.ToString(); solBeneficioPollux.NomeFormaPagamento = itemCrm.FormaPagamento.Name; } else { solBeneficioPollux.CodigoFormaPagamento = Guid.Empty.ToString(); solBeneficioPollux.NomeFormaPagamento = "N/A"; } if (itemCrm.ValorAprovado.HasValue) { solBeneficioPollux.ValorAprovado = itemCrm.ValorAprovado.Value; } if (itemCrm.TipoPriceProtection.HasValue) { solBeneficioPollux.TipoPriceProtection = itemCrm.TipoPriceProtection.Value; if (itemCrm.StatusCalculoPriceProtection.HasValue) { solBeneficioPollux.StatusCalculoPriceProtection = itemCrm.StatusCalculoPriceProtection.Value; } } if (itemCrm.ResultadoPrevisto.HasValue) { solBeneficioPollux.ResultadoPrevisto = itemCrm.ResultadoPrevisto.Value; } if (itemCrm.ResultadoAlcancado.HasValue) { solBeneficioPollux.ResultadoAlcancado = itemCrm.ResultadoAlcancado.Value; } if (!string.IsNullOrEmpty(itemCrm.TrimestreCompetencia)) { solBeneficioPollux.TrimestreCompetencia = itemCrm.TrimestreCompetencia; } if (!string.IsNullOrEmpty(itemCrm.Descricao)) { solBeneficioPollux.DescricaoSolicitacao = itemCrm.Descricao; } if (itemCrm.DataIniAcao.HasValue) { solBeneficioPollux.DataInicioAcao = itemCrm.DataIniAcao.Value; } if (itemCrm.DataFimAcao.HasValue) { solBeneficioPollux.DataPrevistaRetornoAcao = itemCrm.DataFimAcao.Value; } if (itemCrm.ValorPago.HasValue) { solBeneficioPollux.ValorPago = itemCrm.ValorPago.Value; } if (itemCrm.BeneficioPrograma != null) { solBeneficioPollux.CodigoBeneficio = itemCrm.BeneficioPrograma.Id.ToString(); solBeneficioPollux.NomeBeneficio = itemCrm.BeneficioPrograma.Name; Beneficio benefProg = new Intelbras.CRM2013.Domain.Servicos.BeneficioService(this.Organizacao, this.IsOffline).ObterPor(itemCrm.BeneficioPrograma.Id); if (benefProg != null && benefProg.Codigo.HasValue) { solBeneficioPollux.BeneficioCodigo = benefProg.Codigo.Value; } } else { solBeneficioPollux.CodigoBeneficio = Guid.Empty.ToString(); solBeneficioPollux.NomeBeneficio = "N/A"; solBeneficioPollux.BeneficioCodigo = (int)this.PreencherAtributoVazio("int"); } if (itemCrm.AlteradaParaStockRotation.HasValue) { solBeneficioPollux.AlteradaStockRotation = itemCrm.AlteradaParaStockRotation.Value; } else { solBeneficioPollux.AlteradaStockRotation = false; } if (itemCrm.SituacaoIrregularidades.HasValue) { solBeneficioPollux.SolicitacaoIrregular = itemCrm.SituacaoIrregularidades.Value; } else { solBeneficioPollux.SolicitacaoIrregular = false; } if (itemCrm.AjusteSaldo.HasValue) { solBeneficioPollux.SolicitacaoAjuste = itemCrm.AjusteSaldo.Value; } if (itemCrm.ValorCancelado.HasValue) { solBeneficioPollux.ValorCancelado = itemCrm.ValorCancelado.Value; } //Busca as unidades de negócio relacionadas ao Benefício do canal List <SolicitacaoXUnidades> lstUnidadesBenef = new Servicos.SolicitacaoXUnidadesService(this.Organizacao, this.IsOffline).ListarPor(itemCrm.ID.Value); solBeneficioPollux.UnidadesRelacionadas = this.ConverteLista(lstUnidadesBenef); lstRetorno.Add(solBeneficioPollux); } #endregion return(lstRetorno); }
public void ProdutoSolicitacaoShowRoom(ProdutosdaSolicitacao objProdutoSolicitacao) { #region Verificações de valores if (objProdutoSolicitacao == null) { throw new ArgumentException("(CRM) Produto Solicitação Vazio"); } if (objProdutoSolicitacao.BeneficioPrograma == null) { throw new ArgumentException("(CRM) Campo Benefício de Programa obrigatório"); } if (objProdutoSolicitacao.SolicitacaoBeneficio == null) { throw new ArgumentException("(CRM) Campo Solicitação de Benefício obrigatória"); } #endregion Beneficio benefPrograma = new Intelbras.CRM2013.Domain.Servicos.BeneficioService(RepositoryService).ObterPor(objProdutoSolicitacao.BeneficioPrograma.Id); #region Verificações de valores if (benefPrograma == null) { throw new ArgumentException("(CRM) Benefício do Programa não encontrado"); } #endregion if (benefPrograma.Codigo == (int)Domain.Enum.BeneficiodoPrograma.Codigos.Showroom) { #region Verificações de valores if (objProdutoSolicitacao.Produto == null) { throw new ArgumentException("(CRM) Campo Produto obrigatório"); } #endregion Product produto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(RepositoryService).ObterPor(objProdutoSolicitacao.Produto.Id); #region Verificações de valores if (produto == null) { throw new ArgumentException("(CRM) Produto " + objProdutoSolicitacao.Produto.Name.ToString() + " não encontrado"); } if (produto.Segmento == null) { throw new ArgumentException("(CRM) Campo segmento do Produto não preenchido,operação cancelada"); } #endregion Segmento objSegmento = new Intelbras.CRM2013.Domain.Servicos.SegmentoService(RepositoryService).ObterPor(produto.Segmento.Id); #region Verificações de valores if (objSegmento == null) { throw new ArgumentException("(CRM) Segmento do Produto não encontrado"); } #endregion ParametroGlobal paramIntervalo = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(RepositoryService).ObterPor((int)Domain.Enum.TipoParametroGlobal.PrazoPermitidoNovaCompraShowroom, null, null, null, null, null, null, null); #region Verificações de valores if (paramIntervalo == null) { throw new ArgumentException("(CRM) Parâmetro Global não encontrado para 'Prazo permitido para nova compra de showroom'.Operação Cancelada"); } #endregion SolicitacaoBeneficio objSolicBenef = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(RepositoryService).ObterPor(objProdutoSolicitacao.SolicitacaoBeneficio.Id); #region Verificação de valores if (objSolicBenef == null) { throw new ArgumentException("(CRM) Solicitação Benefício não encontrada"); } if (objSolicBenef.BeneficioCanal == null) { throw new ArgumentException("(CRM) Benefício do Canal não encontrado"); } #endregion List <SolicitacaoBeneficio> solicBenef = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(RepositoryService).ListarPorBeneficioCanalEStatus(objSolicBenef.BeneficioCanal.Id, objSolicBenef.BeneficioPrograma.Id, (int)Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.PagamentoEfetuado); if (solicBenef.Count > 0) { List <SolicitacaoBeneficio> tmpSolicBenef = new List <SolicitacaoBeneficio>(); foreach (SolicitacaoBeneficio item in solicBenef) { //DateTime.Compare(item.DataCriacao, objSolicBenef.DataCriacao); int diferencaDias = Math.Abs(item.DataCriacao.Value.Subtract(objSolicBenef.DataCriacao.Value).Days); if ((diferencaDias >= Convert.ToInt32(paramIntervalo.Valor))) { //Lista com os beneficios que serão verificados tmpSolicBenef.Add(item); } } int qtdMaxima; if (objSegmento.QtdMaximaShowRoom.HasValue) { qtdMaxima = objSegmento.QtdMaximaShowRoom.Value; } else { //Fluxo alternativo 2 ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(RepositoryService).ObterPor((int)Domain.Enum.TipoParametroGlobal.QuantidadeKitsShowroomPorSegmento, null, null, null, null, null, null, null); if (paramGlobal == null) { throw new ArgumentException("(CRM) Parâmetro Global não encontrado para Quantidade de Kits para Showroom.Operação Cancelada"); } qtdMaxima = Convert.ToInt32(paramGlobal.Valor); } #region Agrupa Produtos por Segmento do Produto decimal qtdProdutosSegmento = 0; if (tmpSolicBenef.Count > 0) { foreach (var item in tmpSolicBenef) { List <ProdutosdaSolicitacao> produtosSolic = new Intelbras.CRM2013.Domain.Servicos.ProdutosdaSolicitacaoService(RepositoryService).ListarPorSolicitacao(item.ID.Value); if (produtosSolic.Count > 0) { foreach (var produtoSolic in produtosSolic) { if (produtoSolic.Produto == null) { throw new ArgumentException("Produto da Solicitação não cadastrado."); } Product _produto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(RepositoryService).ObterPor(produtoSolic.Produto.Id); if (_produto == null) { throw new ArgumentException("Produto não encontrado"); } if (_produto.Segmento == null) { throw new ArgumentException("Segmento do Produto " + _produto.Nome + " não preenchido"); } if (_produto.Segmento.Id == objSegmento.ID.Value) { qtdProdutosSegmento += produtoSolic.QuantidadeAprovada.Value; } } } } } #endregion if (qtdProdutosSegmento > qtdMaxima) { throw new ArgumentException("(CRM) Limite de compras de showroom atingido para este segmento.Operação bloqueada."); } } } }