/// <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)); } }
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)); } }