public int CargaSellOutProdutos() { int pagina = 1; int contagem = 500; bool moreRecords = true; int registrosAtualizados = 0; string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser"); string senha = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd"); while (moreRecords) { try { List <Model.Product> lstProduto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarTodosProdutos(ref pagina, contagem, out moreRecords); foreach (var item in lstProduto) { string xml; bool resultado; string resposta; XDocument xmlroot = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XElement("Produto", new XElement("Idprodutocrm", item.ID), new XElement("Idprodutoerp", item.Codigo), new XElement("Statuscode", item.RazaoStatus), new XElement("Statecode", item.Status) )); xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();; resultado = new Domain.Servicos.SellOutService(this.Organizacao, this.IsOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta); if (resultado == false) { throw new ArgumentException(resposta); } registrosAtualizados++; } } catch (TimeoutException e) { continue; } } return(registrosAtualizados); }
private List <Pollux.Entities.ProdutoItem> ConverteLista(List <ProdutoEstabelecimento> LstRegistrosCrm) { List <Pollux.Entities.ProdutoItem> lstPollux = new List <Pollux.Entities.ProdutoItem>(); foreach (ProdutoEstabelecimento item in LstRegistrosCrm) { Pollux.Entities.ProdutoItem Objeto = new Pollux.Entities.ProdutoItem(); Objeto.CodigoEstabelecimento = codigoEstabelecimento; Objeto.NomeEstabelecimento = item.Estabelecimento.Name; Product objProduto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(item.Produto.Id); Objeto.CodigoProduto = objProduto.Codigo; Objeto.NomeProduto = objProduto.Nome; lstPollux.Add(Objeto); } return(lstPollux); }
public ItemListaPreco DefinirPropriedades(Intelbras.Message.Helper.MSG0082 xml) { var crm = new ItemListaPreco(this.Organizacao, this.IsOffline); #region Propriedades Crm->Xml if (!String.IsNullOrEmpty(xml.CodigoItemListaPreco)) { crm.ID = new Guid(xml.CodigoItemListaPreco); } if (!String.IsNullOrEmpty(xml.Produto)) { Product produto = new Product(this.Organizacao, this.IsOffline); produto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(xml.Produto); if (produto != null) { crm.ProdutoID = new Lookup(produto.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Produto não encontrado."; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Produto não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.ListaPreco)) { Model.ListaPreco listaPreco = new Model.ListaPreco(this.Organizacao, this.IsOffline); listaPreco = new Intelbras.CRM2013.Domain.Servicos.ListaPrecoService(this.Organizacao, this.IsOffline).BuscaListaPreco(xml.ListaPreco); if (listaPreco != null && listaPreco.ID.HasValue) { crm.ListaPrecos = new Lookup(listaPreco.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "ListaPreco não encontrado."; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "ListaPreco não enviada."; return(crm); } crm.Valor = xml.Valor; crm.Porcentual = xml.Porcentagem; if (!String.IsNullOrEmpty(xml.ListaDesconto)) { ListaDesconto listaDesconto = new ListaDesconto(this.Organizacao, this.IsOffline); listaDesconto = new Intelbras.CRM2013.Domain.Servicos.ListaDescontoService(this.Organizacao, this.IsOffline).BuscaListaDesconto(xml.ListaDesconto); if (listaDesconto != null) { crm.ListaDesconto = new Lookup(listaDesconto.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Lista Desconto não encontrada."; return(crm); } } else { crm.AddNullProperty("ListaDesconto"); } crm.MetodoPrecificacao = xml.MetodoPrecificacao; crm.OpcaoVendaParcial = xml.OpcaoVendaParcial; crm.ValorArredondamento = xml.ValorArredondamento; crm.OpcaoArredondamento = xml.OpcaoArredondamento; crm.PoliticaArredondamento = xml.PoliticaArredondamento; if (!String.IsNullOrEmpty(xml.Moeda)) { Model.Moeda moeda = new Model.Moeda(this.Organizacao, this.IsOffline); moeda = new Intelbras.CRM2013.Domain.Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorNome(xml.Moeda); if (moeda != null && moeda.ID.HasValue) { crm.Moeda = new Lookup(moeda.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Moeda não encontrada!"; return(crm); } } if (!String.IsNullOrEmpty(xml.UnidadeMedida)) { Unidade unidade = new Unidade(this.Organizacao, this.IsOffline); unidade = new Intelbras.CRM2013.Domain.Servicos.UnidadeService(this.Organizacao, this.IsOffline).BuscaUnidadePorNome(xml.UnidadeMedida); if (unidade != null) { crm.Unidade = new Lookup(unidade.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "UnidadeMedida não encontrada."; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "UnidadeMedida não enviada."; return(crm); } //Entidade não tem ownerid //crm.Proprietario = new SDKore.DomainModel.Lookup((Guid)usuarioIntegracao.ID, "systemuser"); //crm.IntegradoEm = DateTime.Now; //crm.IntegradoPor = usuarioIntegracao.NomeCompleto; //crm.UsuarioIntegracao = xml.LoginUsuario; #endregion return(crm); }
public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem); usuarioIntegracao = usuario; Estado estado = null; Moeda moeda = null; UnidadeNegocio undadeNegocio = null; Guid? produtoId = null; Intelbras.Message.Helper.MSG0086 xml = this.CarregarMensagem <Pollux.MSG0086>(mensagem); #region Validações //Estado if (!String.IsNullOrEmpty(xml.Estado)) { estado = new Servicos.EstadoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.Estado); if (estado == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Estado: " + xml.Estado + " não encontrado no Crm."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Estado obrigatório"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); } //Unidade de Negocio if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio)) { undadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio); if (undadeNegocio == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "UnidadeNegocio: " + xml.CodigoUnidadeNegocio + " não encontrado no Crm."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoUnidadeNegocio não enviado ou fora do padrão(Guid)."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); } //Moeda if (!String.IsNullOrEmpty(xml.Moeda)) { moeda = new Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorNome(xml.Moeda); if (moeda == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Moeda: " + xml.Moeda + " não encontrada no Crm."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Moeda não enviado ou fora do padrão(Guid)."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); } //Produto - não obrigatório if (!String.IsNullOrEmpty(xml.CodigoProduto)) { Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(xml.CodigoProduto); if (produto == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Produto código: " + xml.CodigoProduto + " não encontrado no Crm."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); } else { produtoId = produto.ID.Value; } } #endregion List <Intelbras.Message.Helper.Entities.ProdutoR1> lsTProdutos = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarPSDPPPSCF(undadeNegocio.ID.Value, moeda.ID.Value, estado.ID.Value, produtoId); if (lsTProdutos != null && lsTProdutos.Count > 0) { retorno.Add("ProdutosItens", lsTProdutos); resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso."; } else { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Não foram encontrados registros que satisfaçam os critérios de pesquisa."; } retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0086R1>(numeroMensagem, retorno)); }
private void DefinirPropriedadesProdutoFatura(Intelbras.Message.Helper.MSG0094 xml, Guid FaturaID) { ProdutoFatura crmProdFatura = null; foreach (Pollux.Entities.NotaFiscalItem item in xml.NotaFiscalItens) { crmProdFatura = new ProdutoFatura(this.Organizacao, this.IsOffline); crmProdFatura.ChaveIntegracao = item.ChaveIntegracao; crmProdFatura.Fatura = new Lookup(FaturaID, ""); if (!String.IsNullOrEmpty(item.CodigoProduto)) { Model.Product ObjProduto = new Product(this.Organizacao, this.IsOffline); ObjProduto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(item.CodigoProduto); if (ObjProduto != null && ObjProduto.ID.HasValue) { crmProdFatura.ProdutoId = new Lookup(ObjProduto.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do Produto não encontrado."; return; } } if (!String.IsNullOrEmpty(item.Descricao)) { crmProdFatura.Descricao = item.Descricao; } else { crmProdFatura.AddNullProperty("Descricao"); } crmProdFatura.PrecoOriginal = item.PrecoOriginal; crmProdFatura.ValorLiquido = item.PrecoUnitario; crmProdFatura.PrecoLiquido = item.PrecoLiquido; crmProdFatura.ValorMercadoriaTabela = item.ValorMercadoriaTabela; crmProdFatura.ValorMercadoriaOriginal = item.ValorMercadoriaOriginal; crmProdFatura.ValorMercadoriaLiquida = item.ValorMercadoriaLiquido; crmProdFatura.Precificacao = item.PermiteSubstituirPreco; //Service Natureza Operação NaturezaOperacao ObjNaturezaOperacao = new Intelbras.CRM2013.Domain.Servicos.NaturezaOperacaoService(this.Organizacao, this.IsOffline).BuscaNaturezaOperacaoPorCodigo(item.CodigoNaturezaOperacao); if (ObjNaturezaOperacao != null) { crmProdFatura.NaturezaOperacao = new Lookup((Guid)ObjNaturezaOperacao.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Natureza de Operação não encontrado."; return; } crmProdFatura.SelecionarProduto = item.ProdutoForaCatalogo; if (!String.IsNullOrEmpty(item.DescricaoProdutoForaCatalogo)) { crmProdFatura.DescricaoProdutoSemCatalogo = item.DescricaoProdutoForaCatalogo; } else { crmProdFatura.AddNullProperty("DescricaoProdutoSemCatalogo"); } crmProdFatura.Precificacao = item.PermiteSubstituirPreco; //Service Unidade Medida Unidade ObjUnidadeMedida = new Intelbras.CRM2013.Domain.Servicos.UnidadeService(this.Organizacao, this.IsOffline).BuscaUnidadePorNome(item.UnidadeMedida); if (ObjUnidadeMedida != null) { crmProdFatura.Unidade = new Lookup((Guid)ObjUnidadeMedida.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Unidade de Medida não encontrado."; return; } if (item.ValorBaseICMS.HasValue) { crmProdFatura.ValorBaseICMS = item.ValorBaseICMS; } else { crmProdFatura.AddNullProperty("ValorBaseICMS"); } if (item.ValorBaseICMSSubstituicao.HasValue) { crmProdFatura.ValorSubstTributaria = item.ValorBaseICMSSubstituicao; } else { crmProdFatura.AddNullProperty("ValorSubstTributaria"); } if (item.ValorICMS.HasValue) { crmProdFatura.ValorICMSItem = item.ValorICMS; } else { crmProdFatura.AddNullProperty("ValorICMSItem"); } if (item.ValorICMSSubstituicao.HasValue) { crmProdFatura.ValorICMSSubstTributaria = item.ValorICMSSubstituicao; } else { crmProdFatura.AddNullProperty("ValorICMSSubstTributaria"); } if (item.ValorICMSNaoTributado.HasValue) { crmProdFatura.ValorICMSNaoTributado = item.ValorICMSNaoTributado; } else { crmProdFatura.AddNullProperty("ValorICMSNaoTributado"); } if (item.ValorICMSOutras.HasValue) { crmProdFatura.ValorICMSOutras = item.ValorICMSOutras; } else { crmProdFatura.AddNullProperty("ValorICMSOutras"); } crmProdFatura.CodigoTributarioICMS = item.CodigoTributarioICMS; if (!String.IsNullOrEmpty(item.CodigoTributarioISS)) { crmProdFatura.CodigoTributarioISS = item.CodigoTributarioISS; } else { crmProdFatura.AddNullProperty("CodigoTributarioISS"); } crmProdFatura.CodigoTributarioIPI = item.CodigoTributarioIPI; if (item.ValorBaseIPI.HasValue) { crmProdFatura.ValorBaseIPI = item.ValorBaseIPI; } else { crmProdFatura.AddNullProperty("ValorBaseIPI"); } if (item.AliquotaISS.HasValue) { crmProdFatura.AliquotaISS = (double)item.AliquotaISS; } else { crmProdFatura.AddNullProperty("AliquotaISS"); } crmProdFatura.CodigoTributarioIPI = item.CodigoTributarioIPI; crmProdFatura.ValorBaseISS = item.ValorBaseISS; crmProdFatura.AliquotaIPI = (double)item.AliquotaIPI; crmProdFatura.AliquotaICMS = (double)item.AliquotaICMS; crmProdFatura.ValorISSItem = item.ValorISS; crmProdFatura.ValorISSNaoTributado = item.ValorISSNaoTributado; crmProdFatura.ValorISSOutras = item.ValorISSOutras; crmProdFatura.CalcularRebate = item.CalcularRebate; if (item.ValorIPI.HasValue) { crmProdFatura.ValorIPIItem = item.ValorIPI; } else { crmProdFatura.AddNullProperty("ValorIPIItem"); } if (item.ValorIPINaoTributado.HasValue) { crmProdFatura.ValorIPINaoTributado = item.ValorIPINaoTributado; } else { crmProdFatura.AddNullProperty("ValorIPINaoTributado"); } if (item.ValorIPIOutras.HasValue) { crmProdFatura.ValorIPIOutras = item.ValorIPIOutras; } else { crmProdFatura.AddNullProperty("ValorIPIOutras"); } if (item.PrecoConsumidor.HasValue) { crmProdFatura.PrecoConsumidor = item.PrecoConsumidor; } else { crmProdFatura.AddNullProperty("PrecoConsumidor"); } if (item.QuantidadeCancelada.HasValue) { crmProdFatura.QtdeCancelada = item.QuantidadeCancelada; } else { crmProdFatura.AddNullProperty("QtdeCancelada"); } if (item.QuantidadePendente.HasValue) { crmProdFatura.QtdePedidoPendente = item.QuantidadePendente; } else { crmProdFatura.AddNullProperty("QtdePedidoPendente"); } if (item.DataEntrega.HasValue) { crmProdFatura.Entregueem = item.DataEntrega; } else { crmProdFatura.AddNullProperty("Entregueem"); } if (item.CondicaoFrete.HasValue) { crmProdFatura.CondicoesFrete = item.CondicaoFrete; } else { crmProdFatura.AddNullProperty("CondicoesFrete"); } if (item.CalcularRebate.HasValue) { //TODO: Registrar valor de CalcularRebate no Item da nota } if (item.ValorOriginal.HasValue) { crmProdFatura.ValorOriginal = item.ValorOriginal; } else { crmProdFatura.AddNullProperty("ValorOriginal"); } crmProdFatura.TotalImpostos = item.ValorTotalImposto; crmProdFatura.DescontoManual = item.ValorDescontoManual; crmProdFatura.Quantidade = item.Quantidade; crmProdFatura.Remessa = item.RetiraNoLocal; if (item.QuantidadeEntregue.HasValue) { crmProdFatura.QtdeEntregue = item.QuantidadeEntregue; } else { crmProdFatura.AddNullProperty("QtdeEntregue"); } if (item.NumeroSequencia.HasValue) { crmProdFatura.NumeroSequencia = item.NumeroSequencia; } else { crmProdFatura.AddNullProperty("NumeroSequencia"); } //Service Unidade Negócio UnidadeNegocio ObjUnidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(item.CodigoUnidadeNegocio); if (ObjUnidadeNegocio != null) { crmProdFatura.UnidadeNegocio = new Lookup((Guid)ObjUnidadeNegocio.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Unidade de Negócio não encontrado."; return; } #region Representante crmProdFatura.IntegradoRepresentanteComErro = false; crmProdFatura.RepresentanteOriginal = item.CodigoRepresentante.ToString(); Contato ObjRepresentante = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline) .BuscaContatoPorCodigoRepresentante(item.CodigoRepresentante.ToString()); if (ObjRepresentante != null) { crmProdFatura.Representante = new Lookup(ObjRepresentante.ID.Value, ""); } else { crmProdFatura.IntegradoRepresentanteComErro = true; crmProdFatura.Representante = new Lookup(ObterRepresentatePadrao(), string.Empty); } #endregion //Service Moeda Moeda ObjMoeda = new Intelbras.CRM2013.Domain.Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorCodigo(xml.Moeda); if (ObjMoeda != null) { crmProdFatura.Moeda = new Lookup((Guid)ObjMoeda.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Moeda não encontrado."; return; } crmProdFatura.RazaoStatus = 1; string acaoItemFatura = item.Acao; if (!string.IsNullOrEmpty(item.EnderecoEntrega.NomeEndereco)) { crmProdFatura.NomeEntrega = item.EnderecoEntrega.NomeEndereco; } else { crmProdFatura.AddNullProperty("NomeEntrega"); } crmProdFatura.CEPEntrega = item.EnderecoEntrega.CEP; crmProdFatura.Rua1Entrega = item.EnderecoEntrega.Logradouro; if (!string.IsNullOrEmpty(item.EnderecoEntrega.Complemento)) { crmProdFatura.Rua2Entrega = item.EnderecoEntrega.Complemento; } else { crmProdFatura.AddNullProperty("Rua2Entrega"); } crmProdFatura.Rua3Entrega = item.EnderecoEntrega.Bairro; crmProdFatura.CidadeEntrega = item.EnderecoEntrega.NomeCidade; if (!String.IsNullOrEmpty(item.EnderecoEntrega.Estado)) { crmProdFatura.EstadoEntrega = item.EnderecoEntrega.Estado; } if (!String.IsNullOrEmpty(item.EnderecoEntrega.Pais)) { crmProdFatura.PaisEntrega = item.EnderecoEntrega.Pais; } if (!String.IsNullOrEmpty(item.EnderecoEntrega.Telefone)) { crmProdFatura.TelefoneEntrega = item.EnderecoEntrega.Telefone; } else { crmProdFatura.AddNullProperty("TelefoneEntrega"); } if (!String.IsNullOrEmpty(item.EnderecoEntrega.Fax)) { crmProdFatura.FAXEntrega = item.EnderecoEntrega.Fax; } else { crmProdFatura.AddNullProperty("FAXEntrega"); } if (acaoItemFatura == "A" || acaoItemFatura == "I") { lstProdutoFaturaUpdate.Add(crmProdFatura); } if (acaoItemFatura == "E") { lstProdutoFaturaDelete.Add(crmProdFatura); } } }
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."); } } } }