예제 #1
0
        public IActionResult Saque(ContaMovimentoModel contaMovimento)
        {
            ContaBE          contaBE          = null;
            ContaMovimentoBE contaMovimentoBE = null;
            DateTime         dataNow          = DateTime.Now;
            string           operacaoSigla    = "SQ";

            try
            {
                contaBE          = new ContaBE();
                contaMovimentoBE = new ContaMovimentoBE(contaBE.GetSqlCommand());

                var conta = new ContaModel(HttpContextAccessor);
                contaMovimento.Conta = contaBE.ValidarConta(conta);

                if (contaMovimento.Valor > (contaMovimento.Conta.Saldo + contaMovimento.Conta.ChequeEspecial))
                {
                    ViewBag.Info = "Valor solicitado maior que o saldo disponivel.";
                    return(View());
                }


                contaMovimentoBE.Sacar(contaMovimento, operacaoSigla);

                return(View());
            }
            catch (Exception ex)
            {
                return(View());
            }
        }
예제 #2
0
 public List <ContaMovimentoModel> Listar(ContaMovimentoModel obj)
 {
     try
     {
         return(Selecionar(obj));
     }
     catch (Exception e)
     {
         throw e;
     }
 }
예제 #3
0
 public ContaMovimentoModel Consultar(ContaMovimentoModel obj)
 {
     try
     {
         List <ContaMovimentoModel> lst = Selecionar(obj);
         return(lst.Count > 0 ? lst.FirstOrDefault() : null);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
예제 #4
0
        public List <ContaMovimentoModel> Listar(ContaMovimentoModel obj = null)
        {
            ContaMovimentoDAO contaMovimentoDAO = null;

            try
            {
                contaMovimentoDAO = new ContaMovimentoDAO(GetSqlCommand());
                return(contaMovimentoDAO.Listar(obj));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #5
0
        public void Inserir(ContaMovimentoModel obj)
        {
            ContaMovimentoDAO contaMovimentoDAO = null;

            try
            {
                contaMovimentoDAO = new ContaMovimentoDAO(GetSqlCommand());
                BeginTransaction();
                contaMovimentoDAO.Inserir(obj);
                Commit();
            }
            catch (Exception ex)
            {
                Rollback();
                throw ex;
            }
        }
예제 #6
0
        public int Inserir(ContaMovimentoModel obj)
        {
            int id = 0;

            try
            {
                StringBuilder strBuilder = new StringBuilder();

                GetSqlCommand().Parameters.Clear();
                strBuilder.AppendLine(@"INSERT INTO dbo.ContaMovimento
                                        (
	                                        IdConta, 
	                                        IdContaMovimentoTipo, 
	                                        DataMovimento,
	                                        Valor
                                        )
                                        VALUES              
                                        (
	                                        @IdConta, 
	                                        @IdContaMovimentoTipo, 
	                                        @DataMovimento,
	                                        @Valor
                                        )");

                GetSqlCommand().CommandText = "";
                GetSqlCommand().CommandText = strBuilder.ToString();

                GetSqlCommand().Parameters.AddWithValue("IdConta", obj.Conta.Id);
                GetSqlCommand().Parameters.AddWithValue("IdContaMovimentoTipo", obj.ContaMovimentoTipo.Id);
                GetSqlCommand().Parameters.AddWithValue("DataMovimento", obj.DataMovimento);
                GetSqlCommand().Parameters.AddWithValue("Valor", obj.Valor);


                GetSqlCommand().ExecuteNonQuery();

                id = UltimoIdInseridoIdentity("ContaMovimento");

                return(id);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #7
0
        private List <ContaMovimentoModel> Selecionar(ContaMovimentoModel obj)
        {
            List <ContaMovimentoModel> lst = null;

            try
            {
                objSbSelect = new StringBuilder();

                objSbSelect.AppendLine(@"
                                            SELECT ContaMovimento.IdContaMovimento
                                                 , ContaMovimento.DataMovimento
                                                 , ContaMovimento.Valor
                                                 , ContaOperacao.DataOperacao
                                                 , Conta.IdConta
                                                 , Conta.Agencia
                                                 , Conta.Numero
                                                 , Conta.Saldo
                                                 , Conta.ChequeEspecial
                                                 , ContaTipo.IdContaTipo
                                                 , ContaTipo.Descricao AS ContaTipo
                                                 , ContaMovimentoTipo.IdContaMovimentoTipo
                                                 , ContaMovimentoTipo.Descricao AS ContaMovimentoTipo
                                                 , Operacao.IdOperacao
                                                 , Operacao.Descricao AS Operacao
                                                 , Operacao.Custo
                                                 , TipoContabil.IdTipoContabil
                                                 , TipoContabil.Descricao AS TipoContabil
                                                 , TipoContabil.Sigla AS TipoContabilSigla
                                            FROM ContaMovimento
                                            INNER JOIN Conta
                                                    ON ContaMovimento.IdConta = Conta.IdConta
                                            INNER JOIN ContaTipo
                                                    ON Conta.IdContaTipo = ContaTipo.IdContaTipo
                                            INNER JOIN ContaMovimentoTipo
                                                    ON ContaMovimento.IdContaMovimentoTipo = ContaMovimentoTipo.IdContaMovimentoTipo
                                            INNER JOIN TipoContabil
                                                    ON ContaMovimentoTipo.IdTipoContabil = TipoContabil.IdTipoContabil
                                            LEFT JOIN ContaMovimentoOperacao
                                                    ON ContaMovimentoOperacao.IdContaMovimento = ContaMovimento.IdContaMovimento
                                            LEFT JOIN ContaOperacao
                                                    ON ContaMovimentoOperacao.IdContaOperacao = ContaOperacao.IdContaOperacao
                                            LEFT JOIN Operacao
                                                    ON ContaOperacao.IdOperacao = Operacao.IdOperacao
                                            WHERE 1 = 1 ");

                if (obj != null)
                {
                    GetSqlCommand().Parameters.Clear();
                    if (obj.Id > 0)
                    {
                        objSbSelect.AppendLine(@" AND ContaMovimento.IdContaMovimento = @IdContaMovimento");
                        GetSqlCommand().Parameters.Add("IdContaMovimento", SqlDbType.Int).Value = obj.Id;
                    }
                    if (obj.Conta.Id > 0)
                    {
                        objSbSelect.AppendLine(@" AND Conta.IdConta = @IdConta");
                        GetSqlCommand().Parameters.Add("IdConta", SqlDbType.Int).Value = obj.Conta.Id;
                    }
                    if (obj.ContaOperacao.Operacao.Id > 0)
                    {
                        objSbSelect.AppendLine(@" AND Operacao.IdOperacao = @IdOperacao");
                        GetSqlCommand().Parameters.Add("IdOperacao", SqlDbType.Int).Value = obj.ContaOperacao.Operacao.Id;
                    }
                    if (obj.ContaOperacao.Id > 0)
                    {
                        objSbSelect.AppendLine(@" AND ContaOperacao.IdContaOperacao = @IdContaOperacao");
                        GetSqlCommand().Parameters.Add("IdContaOperacao", SqlDbType.Int).Value = obj.ContaOperacao.Id;
                    }
                }

                GetSqlCommand().CommandText = "";
                GetSqlCommand().CommandText = objSbSelect.ToString();

                lst = new List <ContaMovimentoModel>();

                while (GetSqlDataReader().Read())
                {
                    ContaMovimentoModel item = new ContaMovimentoModel();

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("IdContaMovimento"))))
                    {
                        item.Id = Convert.ToInt32(GetSqlDataReader()["IdContaMovimento"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("DataMovimento"))))
                    {
                        item.DataMovimento = Convert.ToDateTime(GetSqlDataReader()["DataMovimento"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("Valor"))))
                    {
                        item.Valor = Convert.ToDecimal(GetSqlDataReader()["Valor"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("DataOperacao"))))
                    {
                        item.ContaOperacao.DataOperacao = Convert.ToDateTime(GetSqlDataReader()["DataOperacao"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("IdConta"))))
                    {
                        item.Conta.Id = Convert.ToInt32(GetSqlDataReader()["IdConta"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("Agencia"))))
                    {
                        item.Conta.Agencia = Convert.ToString(GetSqlDataReader()["Agencia"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("Numero"))))
                    {
                        item.Conta.Numero = Convert.ToString(GetSqlDataReader()["Numero"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("Saldo"))))
                    {
                        item.Conta.Saldo = Convert.ToDecimal(GetSqlDataReader()["Saldo"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("ChequeEspecial"))))
                    {
                        item.Conta.ChequeEspecial = Convert.ToDecimal(GetSqlDataReader()["ChequeEspecial"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("IdContaTipo"))))
                    {
                        item.Conta.ContaTipo.Id = Convert.ToInt32(GetSqlDataReader()["IdContaTipo"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("ContaTipo"))))
                    {
                        item.Conta.ContaTipo.Descricao = Convert.ToString(GetSqlDataReader()["ContaTipo"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("IdContaMovimentoTipo"))))
                    {
                        item.ContaMovimentoTipo.Id = Convert.ToInt32(GetSqlDataReader()["IdContaMovimentoTipo"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("ContaMovimentoTipo"))))
                    {
                        item.ContaMovimentoTipo.Descricao = Convert.ToString(GetSqlDataReader()["ContaMovimentoTipo"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("IdOperacao"))))
                    {
                        item.ContaOperacao.Operacao.Id = Convert.ToInt32(GetSqlDataReader()["IdOperacao"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("Operacao"))))
                    {
                        item.ContaOperacao.Operacao.Descricao = Convert.ToString(GetSqlDataReader()["Operacao"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("Custo"))))
                    {
                        item.ContaOperacao.Operacao.Custo = Convert.ToDecimal(GetSqlDataReader()["Custo"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("IdTipoContabil"))))
                    {
                        item.ContaMovimentoTipo.TipoContabil.Id = Convert.ToInt32(GetSqlDataReader()["IdTipoContabil"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("TipoContabil"))))
                    {
                        item.ContaMovimentoTipo.TipoContabil.Descricao = Convert.ToString(GetSqlDataReader()["TipoContabil"]);
                    }

                    if (!(GetSqlDataReader().IsDBNull(GetSqlDataReader().GetOrdinal("TipoContabilSigla"))))
                    {
                        item.ContaMovimentoTipo.TipoContabil.Sigla = Convert.ToString(GetSqlDataReader()["TipoContabilSigla"]);
                    }

                    lst.Add(item);
                }

                return(lst);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (objSbSelect != null)
                {
                    objSbSelect = null;
                }
                Close();
            }
        }
예제 #8
0
        public void Sacar(ContaMovimentoModel obj, string operacaoSigla)
        {
            ContaMovimentoOperacaoDAO contaMovimentoOperacaoDAO = null;
            ContaMovimentoDAO         contaMovimentoDAO         = null;
            ContaOperacaoDAO          contaOperacaoDAO          = null;
            ContaDAO              contaDAO              = null;
            ContaBE               contaBE               = null;
            OperacaoDAO           operacaoDAO           = null;
            ContaMovimentoTipoDAO contaMovimentoTipoDAO = null;
            bool primeiraOperacao = true;
            var  dataNow          = DateTime.Now;

            try
            {
                contaMovimentoDAO         = new ContaMovimentoDAO(GetSqlCommand());
                contaOperacaoDAO          = new ContaOperacaoDAO(GetSqlCommand());
                contaDAO                  = new ContaDAO(GetSqlCommand());
                contaBE                   = new ContaBE(GetSqlCommand());
                contaMovimentoOperacaoDAO = new ContaMovimentoOperacaoDAO(GetSqlCommand());

                contaMovimentoTipoDAO = new ContaMovimentoTipoDAO(GetSqlCommand());
                operacaoDAO           = new OperacaoDAO(GetSqlCommand());

                var operacao = operacaoDAO.Consultar(new OperacaoModel()
                {
                    Sigla = operacaoSigla
                });

                var movimentoTipo = contaMovimentoTipoDAO.Consultar(new ContaMovimentoTipoModel()
                {
                    Sigla        = "SQ",
                    TipoContabil = { Sigla = "D" }
                });

                var contaOperacao = contaOperacaoDAO.Consultar(new ContaOperacaoModel()
                {
                    Ano      = dataNow.Year,
                    Mes      = dataNow.Month,
                    Operacao = { Id = operacao.Id },
                    Conta    = { Id = obj.Conta.Id }
                });

                var conta = contaDAO.Consultar(new ContaModel()
                {
                    Id = obj.Conta.Id
                });

                obj.Id = contaMovimentoDAO.Inserir(new ContaMovimentoModel()
                {
                    Conta = { Id = obj.Conta.Id },
                    ContaMovimentoTipo = { Id = movimentoTipo.Id },
                    DataMovimento      = dataNow,
                    Valor = obj.Valor
                });

                obj.ContaOperacao.Id = contaOperacaoDAO.Inserir(new ContaOperacaoModel()
                {
                    Conta        = { Id = obj.Conta.Id },
                    Operacao     = { Id = operacao.Id },
                    DataOperacao = dataNow
                });

                contaMovimentoOperacaoDAO.Inserir(new ContaMovimentoOperacaoModel()
                {
                    ContaMovimento = { Id = obj.Id },
                    ContaOperacao  = { Id = obj.ContaOperacao.Id }
                });

                if (obj.Conta.Saldo > 0)
                {
                    obj.Conta.Saldo -= obj.Valor;
                    if (obj.Conta.Saldo < 0)
                    {
                        var saldoAtual = obj.Conta.Saldo;
                        obj.Conta.ChequeEspecial -= (saldoAtual * -1);
                        obj.Conta.Saldo           = 0;
                    }
                }
                else
                {
                    obj.Conta.ChequeEspecial -= obj.Valor;
                }

                if (!primeiraOperacao)
                {
                    movimentoTipo = contaMovimentoTipoDAO.Consultar(new ContaMovimentoTipoModel()
                    {
                        Sigla        = "OP",
                        TipoContabil = { Sigla = "D" }
                    });

                    contaMovimentoDAO.Inserir(new ContaMovimentoModel()
                    {
                        Conta = { Id = obj.Conta.Id },
                        ContaMovimentoTipo = { Id = movimentoTipo.Id },
                        DataMovimento      = dataNow,
                        Valor = operacao.Custo
                    });

                    if (obj.Conta.Saldo > 0)
                    {
                        obj.Conta.Saldo -= operacao.Custo;
                        if (obj.Conta.Saldo < 0)
                        {
                            var saldoAtual = obj.Conta.Saldo;
                            obj.Conta.ChequeEspecial -= (saldoAtual * -1);
                            obj.Conta.Saldo           = 0;
                        }
                    }
                    else
                    {
                        obj.Conta.ChequeEspecial -= operacao.Custo;
                    }
                }

                contaDAO.AtualizarSaldo(obj.Conta);

                Commit();
            }
            catch (Exception ex)
            {
                Rollback();
                throw ex;
            }
        }