Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 public string IntegracaoBarramento(ListaPrecoPSDPPPSCF objListaPreco)
 {
     Domain.Integracao.MSG0087 msgProdEstab = new Domain.Integracao.MSG0087(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline);
     return(msgProdEstab.Enviar(objListaPreco));
 }