none
Como não perder o valor inicial de uma váriavel c# windows forms? RRS feed

  • Pergunta

  • Boa tarde. Estou criando um sistema em c, onde ao cadastrar o cliente é informado o valor de limite que ele pode comprar. Ao cadastrar a nota, o valor da nota é subtraído no valor de limite. E quando o cliente paga a nota, o valor é retornado para o limite.

    O problema é que não quero perder o limite inicial deste cliente. Porém, não sei como fazer para que isso não ocorra. Alguém pode me ajudar?

    Abaixo colocarei o trecho onde é cadastrado ou alterado uma nota. Até o momento, estou subtraindo do valor do limite, ou seja, perdendo o valor inicial.

          private void Bt_Cadastrar_Click(object sender, EventArgs e)
            {
                if (!VerificaCampos())
                    return;
    
                Nota oNota = new Nota();
                if(ICodEdicao > 0)
                    oNota.NotaID = Convert.ToInt32(txt_CodigoNota.Text.Trim());
    
                NotaProduto oNotaProduto = new NotaProduto();
                oNota.ClienteID = Convert.ToInt32(txt_CodigoCliente.Text.Trim());
                oNota.FuncionarioID = Convert.ToInt32(txt_CodigoFuncionario.Text.Trim());
                oNota.NumeroNota = txt_NumeroControle.Text.Trim();
                oNota.DataEmissao = Convert.ToDateTime(dt_Data.Value.ToString());
                oNota.DataAlteracao = DateTime.Now;
                oNota.Produtos = MontarListViewNotaProduto();
                oNota.Status = Entidades.Enumeradores.Status.Aberto;
                oNota.UsuarioID = Sessao.Usuario.Codigo;
                oNotaProduto.NotaID = oNota.NotaID;
                oNota.ValorRestante = Convert.ToDecimal(txt_ValorTotalNota.Text.Trim());
                decimal LimiteCompra = (Convert.ToDecimal(txt_LimiteDisponivel.Text) - Convert.ToDecimal(0.9 * Convert.ToDouble(txt_LimiteDisponivel.Text)));
                if ((Convert.ToDecimal(txt_LimiteDisponivel.Text) - Convert.ToDecimal(txt_ValorTotalNota.Text)) <= 0)
                {
                    DialogResult confirm = MessageBox.Show("Este cliente não possui limites, tem certeza que deseja efetuar essa venda?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    if (confirm.ToString().ToUpper() == "YES")
                    {
                        oNota.Limite = Convert.ToDecimal(txt_LimiteDisponivel.Text.Trim()) - Convert.ToDecimal(txt_ValorTotalNota.Text.Trim());
                    }
                }
                if ((Convert.ToDecimal(txt_LimiteDisponivel.Text) - Convert.ToDecimal(txt_ValorTotalNota.Text)) <= LimiteCompra && (Convert.ToDecimal(txt_LimiteDisponivel.Text) - Convert.ToDecimal(txt_ValorTotalNota.Text)) >  0)
                {
                    DialogResult confirm = MessageBox.Show("O limite deste cliente está se esgotando, tem certeza que deseja efetuar a venda?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    if (confirm.ToString().ToUpper() == "YES")
                    {
                        oNota.Limite = Convert.ToDecimal(txt_LimiteDisponivel.Text.Trim()) - Convert.ToDecimal(txt_ValorTotalNota.Text.Trim());
                    }
                }
    
    
                oNota.Limite = Convert.ToDecimal(txt_LimiteDisponivel.Text.Trim()) - Convert.ToDecimal(txt_ValorTotalNota.Text.Trim());
    
                NotasNG ngNota = new NotasNG();
    
                if (ICodEdicao == 0)
                {
                    //Grava no banco pela primeira vez
                    if (ngNota.Inserir(oNota))
                    {
                        MessageBox.Show("Nota cadastrada com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        LimparCampos();
                    }
                    else
                        MessageBox.Show("Não foi possivel cadastrar a nota. Tente novamente!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                //Edita no banco de dados
                if (ICodEdicao > 0)
                {
                    if (ngNota.Alterar(oNota))
                    {
                        MessageBox.Show("Nota alterada com sucesso!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        LimparCampos();
                    }
                    else
                        MessageBox.Show("Não foi possivel alterar a nota. Tente novamente!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

    sexta-feira, 15 de novembro de 2019 18:40

Respostas

  • Rayanne, faz uma property Limite (Valor total do Limite de crédito do cliente) e uma Debito (Valor que o cliente está devendo) e armazena essas 2 informações no banco de dados, assim, quando o cliente for cadastrado a propriedade Limite será registrada, e quando o mesmo efetuar uma compra, ele terá o valor de débito acrescido. Assim, quando o mesmo efetuar o pagamento terá o seu débito abatido. E quando você precisar de obter o valor do limite que o cliente ainda tem, você apenas subtrai (Limite - Debito). Entendeu?
    • Editado Marcos Pablo sábado, 16 de novembro de 2019 21:12 Falta pontuação e uma informação.
    • Marcado como Resposta IgorFKModerator segunda-feira, 9 de dezembro de 2019 17:27
    sábado, 16 de novembro de 2019 21:06

Todas as Respostas

  • Utilize uma variável do tipo estática.

    Fabiano Carvalho

    sábado, 16 de novembro de 2019 12:23
  • Rayanne, faz uma property Limite (Valor total do Limite de crédito do cliente) e uma Debito (Valor que o cliente está devendo) e armazena essas 2 informações no banco de dados, assim, quando o cliente for cadastrado a propriedade Limite será registrada, e quando o mesmo efetuar uma compra, ele terá o valor de débito acrescido. Assim, quando o mesmo efetuar o pagamento terá o seu débito abatido. E quando você precisar de obter o valor do limite que o cliente ainda tem, você apenas subtrai (Limite - Debito). Entendeu?
    • Editado Marcos Pablo sábado, 16 de novembro de 2019 21:12 Falta pontuação e uma informação.
    • Marcado como Resposta IgorFKModerator segunda-feira, 9 de dezembro de 2019 17:27
    sábado, 16 de novembro de 2019 21:06
  • Muito Obrigada, Marcos Pablo. Segui sua técnica e deu super certo! Me ajudou muito
    segunda-feira, 18 de novembro de 2019 20:10