Пример #1
0
        /// <summary>
        ///     Efetua os calculos com base no acompanhamento da ordem no momento da alteração da mesma na bolsa
        /// </summary>
        /// <param name="Acompanhamento">Acompanhamento de ordem base do calculo</param>
        private void Calcular_SUBSTITUIDA(AcompanhamentoOrdemInfo Acompanhamento)
        {
            //TODO: mudar o controle para carregar os acompanhamentos pois quando se trata de uma ordem VAC o CodigoResposta troca
            TipoSubstituicao Tipo = TipoSubstituicao.INALTERADA;

            try
            {
                var Ocorrencias       = this.Ocorrencias.Values.AsEnumerable();
                var Ocorrencias_TODAS =
                    from a in Ocorrencias
                    where
                    a.CodigoResposta.Equals(Acompanhamento.CodigoResposta)
                    select a;

                var PenultimaOcorrencia = Ocorrencias_TODAS.ToList()[Ocorrencias_TODAS.Count() - 2];

                if (!PenultimaOcorrencia.Preco.Equals(Acompanhamento.Preco))
                {
                    Tipo = TipoSubstituicao.PRECO;
                    //Aplicacao.GravarLog("Acompanhamento.Calcular_SUBSTITUIDA()", String.Format("Ordem: {0} - Substituida por alteração de preço", Acompanhamento.NumeroControleOrdem.ToString()));
                }

                if (!PenultimaOcorrencia.QuantidadeRemanescente.Equals(Acompanhamento.QuantidadeRemanescente))
                {
                    Tipo = TipoSubstituicao.QUANTIDADE;
                    //Aplicacao.GravarLog("Acompanhamento.Calcular_SUBSTITUIDA()", String.Format("Ordem: {0} - Substituida por alteração de quantidade", Acompanhamento.NumeroControleOrdem.ToString()));
                }

                if (!PenultimaOcorrencia.Preco.Equals(Acompanhamento.Preco) && !PenultimaOcorrencia.QuantidadeRemanescente.Equals(Acompanhamento.QuantidadeRemanescente))
                {
                    Tipo = TipoSubstituicao.PRECO_QUANTIDADE;
                    //Aplicacao.GravarLog("Acompanhamento.Calcular_SUBSTITUIDA()", String.Format("Ordem: {0} - Substituida por alteração de quantidade e preço", Acompanhamento.NumeroControleOrdem.ToString()));
                }

                CalcularSubstituicao(Tipo, PenultimaOcorrencia, Acompanhamento);

                this.Posicao.FinanceiroNetAbertas = this.Posicao.FinanceiroTotalAbertaVenda - this.Posicao.FinanceiroTotalAbertaCompra;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(string.Format("Acompanhamento.Calcular_SUBSTITUIDA(): {0}", ex.Message));
            }
        }
Пример #2
0
        private void CalcularSubstituicao(TipoSubstituicao Tipo, AcompanhamentoOrdemInfo UltimaOcorrenciaHistorica, AcompanhamentoOrdemInfo UltimaOcorrencia)
        {
            try
            {
                switch (Tipo)
                {
                case TipoSubstituicao.PRECO:

                    if (UltimaOcorrencia.Direcao.Equals(OrdemDirecaoEnum.Compra))
                    {
                        this.Posicao.FinanceiroTotalAbertaCompra -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente * UltimaOcorrenciaHistorica.Preco);
                        this.Posicao.FinanceiroTotalAbertaCompra += (UltimaOcorrencia.QuantidadeRemanescente * UltimaOcorrencia.Preco);
                    }

                    if (UltimaOcorrencia.Direcao.Equals(OrdemDirecaoEnum.Venda))
                    {
                        this.Posicao.FinanceiroTotalAbertaVenda -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente * UltimaOcorrenciaHistorica.Preco);
                        this.Posicao.FinanceiroTotalAbertaVenda += (UltimaOcorrencia.QuantidadeRemanescente * UltimaOcorrencia.Preco);
                    }

                    break;

                case TipoSubstituicao.QUANTIDADE:
                    if (UltimaOcorrencia.Direcao.Equals(OrdemDirecaoEnum.Compra))
                    {
                        this.Posicao.QuantidadeAbertaCompra      -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente);
                        this.Posicao.QuantidadeAbertaCompra      += (UltimaOcorrencia.QuantidadeRemanescente);
                        this.Posicao.FinanceiroTotalAbertaCompra -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente * UltimaOcorrenciaHistorica.Preco);
                        this.Posicao.FinanceiroTotalAbertaCompra += (UltimaOcorrencia.QuantidadeRemanescente * UltimaOcorrencia.Preco);
                    }
                    if (UltimaOcorrencia.Direcao.Equals(OrdemDirecaoEnum.Venda))
                    {
                        this.Posicao.QuantidadeAbertaVenda      -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente);
                        this.Posicao.QuantidadeAbertaVenda      += (UltimaOcorrencia.QuantidadeRemanescente);
                        this.Posicao.FinanceiroTotalAbertaVenda -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente * UltimaOcorrenciaHistorica.Preco);
                        this.Posicao.FinanceiroTotalAbertaVenda += (UltimaOcorrencia.QuantidadeRemanescente * UltimaOcorrencia.Preco);
                    }
                    break;

                case TipoSubstituicao.PRECO_QUANTIDADE:
                    if (UltimaOcorrencia.Direcao.Equals(OrdemDirecaoEnum.Compra))
                    {
                        this.Posicao.FinanceiroTotalAbertaCompra -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente * UltimaOcorrenciaHistorica.Preco);
                        this.Posicao.FinanceiroTotalAbertaCompra += (UltimaOcorrencia.QuantidadeRemanescente * UltimaOcorrencia.Preco);
                        this.Posicao.QuantidadeAbertaCompra      -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente);
                        this.Posicao.QuantidadeAbertaCompra      += (UltimaOcorrencia.QuantidadeRemanescente);
                    }
                    if (UltimaOcorrencia.Direcao.Equals(OrdemDirecaoEnum.Venda))
                    {
                        this.Posicao.FinanceiroTotalAbertaVenda -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente * UltimaOcorrenciaHistorica.Preco);
                        this.Posicao.FinanceiroTotalAbertaVenda += (UltimaOcorrencia.QuantidadeRemanescente * UltimaOcorrencia.Preco);
                        this.Posicao.QuantidadeAbertaVenda      -= (UltimaOcorrenciaHistorica.QuantidadeRemanescente);
                        this.Posicao.QuantidadeAbertaVenda      += (UltimaOcorrencia.QuantidadeRemanescente);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(string.Format("Acompanhamento.CalcularSubstituicao(): {0}", ex.Message));
            }
        }