public Intelbras.Message.Helper.MSG0087 DefinirPropriedadesPlugin(ListaPrecoPSDPPPSCF objModel) { Pollux.MSG0087 xml = new Pollux.MSG0087(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), Helper.Truncate(objModel.Nome, 40)); var unidadeNegocioModel = _Repository.UnidadeNegocio.Retrieve(objModel.UnidadeNegocio.Id); xml.CodigoListaPreco = objModel.ID.Value.ToString(); xml.CodigoUnidadeNegocio = unidadeNegocioModel.ChaveIntegracao; if (objModel.DataFim.HasValue) { xml.DataFinalVigencia = objModel.DataFim.Value.ToLocalTime(); } else { xml.DataFinalVigencia = null; } if (objModel.DataInicio.HasValue) { xml.DataInicioVigencia = objModel.DataInicio.Value.ToLocalTime(); } else { xml.DataInicioVigencia = null; } xml.Estados = ListarEstados(objModel); xml.ListaPrecoItens = ListarProdutos(objModel); xml.Situacao = (objModel.Status.HasValue ? objModel.Status.Value : 0); return(xml); }
public List <T> ListarPor(ListaPrecoPSDPPPSCF listaPrecoPSDPPPSCF) { var query = GetQueryExpression <T>(true); #region Condições #endregion #region Ordenações #endregion #region Links de Relacionamento query.LinkEntities.Add(new LinkEntity() { LinkFromEntityName = Utility.GetEntityName <T>(), LinkFromAttributeName = "itbc_estadoid", LinkToEntityName = "itbc_itbc_psdid_itbc_estado", LinkToAttributeName = "itbc_estadoid", LinkCriteria = new FilterExpression { FilterOperator = LogicalOperator.And, Conditions = { new ConditionExpression("itbc_psdidid", ConditionOperator.In, listaPrecoPSDPPPSCF.ID.Value) } } }); #endregion return((List <T>) this.RetrieveMultiple(query).List); }
private List <Pollux.Entities.ListaPrecoItem> ListarProdutos(ListaPrecoPSDPPPSCF objModel) { var itensDaListaCRM = _Repository.ProdutoListaPSD.ListarPor(objModel.ID.Value, null); List <Pollux.Entities.ListaPrecoItem> listaItensXml = new List <Pollux.Entities.ListaPrecoItem>(); foreach (var itemCRM in itensDaListaCRM) { listaItensXml.Add(MontarItemDaLista(itemCRM)); } return(listaItensXml); }
private List <string> ListarEstados(ListaPrecoPSDPPPSCF objModel) { var estadosDaListaCRM = _Repository.Estado.ListarPor(objModel); var listaChavesIntegracao = new List <string>(); foreach (var estadoCRM in estadosDaListaCRM) { listaChavesIntegracao.Add(estadoCRM.ChaveIntegracao); } return(listaChavesIntegracao); }
public string Enviar(ListaPrecoPSDPPPSCF objModel) { string retMsg = String.Empty; Intelbras.Message.Helper.MSG0087 mensagem = this.DefinirPropriedadesPlugin(objModel); Domain.Servicos.Integracao integracao = new Servicos.Integracao(this.Organizacao, this.IsOffline); if (integracao.EnviarMensagemBarramento(mensagem.GenerateMessage(true), "1", "1", out retMsg)) { Intelbras.Message.Helper.MSG0087R1 retorno = CarregarMensagem <Pollux.MSG0087R1>(retMsg); if (!retorno.Resultado.Sucesso) { throw new ArgumentException("(CRM) " + string.Concat(retorno.Resultado.Mensagem)); } } else { Intelbras.Message.Helper.ERR0001 erro001 = CarregarMensagem <Pollux.ERR0001>(retMsg); throw new ArgumentException(string.Concat("(CRM) Erro de Integração \n", erro001.GenerateMessage(false))); } return(retMsg); }
public decimal[] CalculoValorUnitarioETotal(ProdutosdaSolicitacao produtoSolicitacao, RepositoryService repoService) { decimal[] valoresCalculados = { 0, 0 }; decimal valorUnitario = 0; SolicitacaoBeneficio solicBen = repoService.SolicitacaoBeneficio.Retrieve(produtoSolicitacao.SolicitacaoBeneficio.Id); Beneficio beneficio = repoService.Beneficio.ObterPor(solicBen.BeneficioPrograma.Id); Product produto = repoService.Produto.Retrieve(produtoSolicitacao.Produto.Id); UnidadeNegocio unidadeNegocio = new UnidadeNegocio(repoService) { ID = solicBen.UnidadedeNegocio.Id, Nome = solicBen.UnidadedeNegocio.Name }; Conta conta = repoService.Conta.Retrieve(solicBen.Canal.Id); Classificacao classificacao = new Classificacao(conta.OrganizationName, conta.IsOffline) { ID = conta.Classificacao.Id, Nome = conta.Classificacao.Name }; Categoria categoria = repoService.Categoria.ObterPor(conta.Categoria.Id); if (beneficio.Codigo != (int)Domain.Enum.BeneficiodoPrograma.Codigos.StockRotation) { Estabelecimento estabelecimento = repoService.Estabelecimento.ObterPor(produtoSolicitacao.Estabelecimento.Id); var lstPrecoProduto = new List <PrecoProduto>(); lstPrecoProduto.Add(new PrecoProduto(repoService.NomeDaOrganizacao, repoService.IsOffline) { codEstabelecimento = estabelecimento.Codigo.Value, CodigoProduto = produto.Codigo, ContaId = solicBen.Canal.Id, Produto = produto, TipoCrossSelling = false, Quantidade = Convert.ToInt32(produtoSolicitacao.QuantidadeAprovada.Value) }); if (conta.Classificacao.Name != "Revendas") { var precoProduto = new ProdutoService(repoService).ListarPor(lstPrecoProduto).First(); if (precoProduto == null || precoProduto.ValorProduto <= 0) { throw new ArgumentException("(CRM) Não foi possível calcular o preço do produto [" + produto.Nome + "]. Verifique política comercial"); } valorUnitario = precoProduto.ValorProduto; } else { ListaPrecoPSDPPPSCF lstListaPreco = repoService.ListaPrecoPSD.ObterPor(conta.Endereco1Estadoid.Id, produto.UnidadeNegocio.Id); if (lstListaPreco == null) { throw new ArgumentException("(CRM) Não foi possível encontrar uma Lista de Preço(PSD) para o Estado [" + conta.Endereco1Estadoid.Name + "] e Unidade de Negócio [" + produto.UnidadeNegocio.Name + "]"); } var precoProduto = repoService.ProdutoListaPSD.ListarPor(lstListaPreco.ID.Value, produto.ID).First(); if (precoProduto == null || precoProduto.ValorPSD <= 0) { throw new ArgumentException("(CRM) Não foi possível calcular o preço do produto [" + produto.Nome + "]. Verifique a Lista PSD para o Estado [" + conta.Endereco1Estadoid.Name + "]"); } valorUnitario = precoProduto.ValorPSD.Value; } } else { ProdutoFatura prodFatura = repoService.ProdutoFatura.ObterObtemPorNotaFiscal(produtoSolicitacao.Produto.Id, produtoSolicitacao.Fatura.Id); if (prodFatura != null) { valorUnitario = prodFatura.ValorLiquido.Value; } else { throw new ArgumentException("(CRM) Produto não localizado na nota fiscal informada."); } } valorUnitario = CalcularDescontoValorSolicitado(valorUnitario, beneficio, unidadeNegocio, classificacao, categoria, repoService); valorUnitario = decimal.Round(valorUnitario, 2); valoresCalculados[0] = valorUnitario; valoresCalculados[1] = valorUnitario * produtoSolicitacao.QuantidadeAprovada.Value; return(valoresCalculados); }
public string IntegracaoBarramento(ListaPrecoPSDPPPSCF objListaPreco) { Domain.Integracao.MSG0087 msgProdEstab = new Domain.Integracao.MSG0087(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline); return(msgProdEstab.Enviar(objListaPreco)); }