예제 #1
0
        /// <summary>
        /// Atualizar dados da conta no banco de dados.
        /// </summary>
        /// <param name="codSituacao">nova situação da conta</param>
        /// <param name="valorDesconto">novo valor de desconto</param>
        /// <param name="codConta">conta pesquisada</param>
        public void Atualizar(string codSituacao, decimal desconto, long codConta)
        {
            try
            {
                var query = from contaSet in saceContext.ContaSet
                            where contaSet.codConta == codConta
                            select contaSet;

                ContaE _conta = query.ToList().ElementAtOrDefault(0);
                _conta.codSituacao = codSituacao;
                _conta.desconto    = desconto;


                var query2 = from contaSet in saceContext.ContaSet
                             where contaSet.codSaida == _conta.codSaida
                             select contaSet;

                decimal somaContas = query2.ToList().Sum(c => (c.valor - c.desconto));

                var query3 = from saida in saceContext.tb_saida
                             where saida.codSaida == _conta.codSaida
                             select saida;

                tb_saida _saida = query3.ToList().ElementAtOrDefault(0);
                if (_saida != null)
                {
                    _saida.totalAVista = somaContas;
                }
                saceContext.SaveChanges();
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
예제 #2
0
        /// <summary>
        /// Substitui as contas associadas a um documento fiscal por uma lista de boletos
        /// </summary>
        /// <param name="cupomFiscal"></param>
        /// <param name="listaContaBoletos"></param>
        public void Substituir(string cupomFiscal, List <Conta> listaContaBoletos)
        {
            try
            {
                var query = from conta in saceContext.ContaSet
                            where conta.numeroDocumento.Equals(cupomFiscal)
                            select conta;
                List <ContaE> listaContas = query.ToList();
                foreach (ContaE conta in listaContas)
                {
                    conta.codSituacao = SituacaoConta.SITUACAO_SUBTITUIDA;
                }

                foreach (Conta boleto in listaContaBoletos)
                {
                    ContaE _conta = new ContaE();
                    Atribuir(boleto, _conta);
                    repConta.Inserir(_conta);
                }
                saceContext.SaveChanges();
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
        /// <summary>
        /// Insere uma movimentacao na conta bancária e atualiza os dados da conta associada
        /// </summary>
        /// <param name="movimentacaoConta">movimentacao da conta</param>
        /// <param name="conta">conta associada</param>
        /// <returns></returns>
        public Int64 Inserir(MovimentacaoConta movimentacaoConta)
        {
            try
            {
                MovimentacaoContaE _movimentacaoContaE = new MovimentacaoContaE();
                Atribuir(movimentacaoConta, _movimentacaoContaE);

                repMovimentacaoConta.Inserir(_movimentacaoContaE);
                saceContext.SaveChanges();

                // Atualiza saldo da conta bancária
                var query = from conta in saceContext.ContaSet
                            where conta.codConta == _movimentacaoContaE.codConta
                            select conta;
                ContaE _contaE = query.FirstOrDefault();
                if (_contaE != null)
                {
                    AtualizaSituacaoConta(_contaE, _movimentacaoContaE, false);
                    AtualizaSituacaoPagamentosEntrada(_contaE);
                    AtualizaSituacaoPagamentosSaida(_contaE, _movimentacaoContaE, false);
                }

                return(_movimentacaoContaE.codMovimentacao);
            }
            catch (Exception e)
            {
                throw new DadosException("Movimentação de Conta", e.Message, e);
            }
        }
 /// <summary>
 /// Atualiza conta para quitada quando todas a soma de todas as movimentacoes quitam a conta
 /// </summary>
 /// <param name="_contaE"></param>
 private ContaE AtualizaSituacaoConta(ContaE contaE, MovimentacaoContaE movimentacaoE, bool removeuMovimento)
 {
     if (contaE != null)
     {
         decimal valorConta = Math.Round(contaE.valor - contaE.desconto, 2);
         if (valorConta == movimentacaoE.valor)
         {
             if (removeuMovimento)
             {
                 contaE.codSituacao = SituacaoConta.SITUACAO_ABERTA;
             }
             else
             {
                 contaE.codSituacao = SituacaoConta.SITUACAO_QUITADA;
             }
         }
         else
         {
             decimal totalMovimentacoesConta = ObterPorConta(contaE.codConta).Sum(c => c.Valor);
             if (valorConta <= totalMovimentacoesConta)
             {
                 contaE.codSituacao = SituacaoConta.SITUACAO_QUITADA;
             }
             else
             {
                 contaE.codSituacao = SituacaoConta.SITUACAO_ABERTA;
             }
         }
     }
     saceContext.SaveChanges();
     return(contaE);
 }
        /// <summary>
        /// Atualiza Situacao dos pagamentos da entrada para quitado quando todas as contas estão quitadas
        /// </summary>
        /// <param name="_contaE"></param>
        private void AtualizaSituacaoPagamentosEntrada(ContaE _contaE)
        {
            var query = from entrada in saceContext.EntradaSet
                        where entrada.codEntrada == _contaE.codEntrada
                        select entrada;
            EntradaE _entradaE = query.ToList().ElementAtOrDefault(0);

            if (_entradaE != null)
            {
                if (!_contaE.codEntrada.Equals(Global.ENTRADA_PADRAO))
                {
                    var query2 = from conta in saceContext.ContaSet
                                 where conta.codSituacao.Equals(SituacaoConta.SITUACAO_ABERTA) && conta.codEntrada == _contaE.codEntrada
                                 select conta;


                    if (query2.Count() == 0)
                    {
                        _entradaE.codSituacaoPagamentos = SituacaoPagamentos.QUITADA;
                    }
                    else
                    {
                        _entradaE.codSituacaoPagamentos = SituacaoPagamentos.LANCADOS;
                    }
                }
            }
            saceContext.SaveChanges();
        }
        /// <summary>
        /// Remover movimentacao
        /// </summary>
        /// <param name="codMovimentacaoConta"></param>
        public void Remover(Int64 codMovimentacaoConta)
        {
            try
            {
                var queryMovimentacao = from movimentacaoContaE in saceContext.MovimentacaoContaSet
                                        where movimentacaoContaE.codMovimentacao == codMovimentacaoConta
                                        select movimentacaoContaE;
                MovimentacaoContaE _movimentacaoContaE = queryMovimentacao.ToList().ElementAtOrDefault(0);
                if (_movimentacaoContaE != null)
                {
                    long codConta = (long)_movimentacaoContaE.codConta;
                    // Atualiza status da conta, entrada e saída
                    var query = from conta in saceContext.ContaSet
                                where conta.codConta == _movimentacaoContaE.codConta
                                select conta;
                    ContaE _contaE = query.FirstOrDefault();

                    repMovimentacaoConta.Remover(_movimentacaoContaE);
                    saceContext.SaveChanges();

                    if (_contaE != null)
                    {
                        AtualizaSituacaoConta(_contaE, _movimentacaoContaE, true);
                        AtualizaSituacaoPagamentosEntrada(_contaE);
                        AtualizaSituacaoPagamentosSaida(_contaE, _movimentacaoContaE, true);
                    }
                }
            }
            catch (Exception e)
            {
                throw new DadosException("Movimentação de Conta", e.Message, e);
            }
        }
 /// <summary>
 /// Atualiza Situacao dos pagamentos da saída para quitado quando todas as contas estão quitadas
 /// </summary>
 /// <param name="_contaE"></param>
 private void AtualizaSituacaoPagamentosSaida(ContaE contaE, MovimentacaoContaE movimentacaoContaE, bool removeuMovimento)
 {
     if (!contaE.codSaida.Equals(Global.SAIDA_PADRAO))
     {
         var query = from saida in saceContext.tb_saida
                     where saida.codSaida == contaE.codSaida
                     select saida;
         tb_saida _saidaE = query.FirstOrDefault();
         if (_saidaE != null)
         {
             if (_saidaE.totalAVista == movimentacaoContaE.valor)
             {
                 if (removeuMovimento)
                 {
                     _saidaE.codSituacaoPagamentos = SituacaoPagamentos.LANCADOS;
                 }
                 else
                 {
                     _saidaE.codSituacaoPagamentos = SituacaoPagamentos.QUITADA;
                 }
             }
             else
             {
                 if (GerenciadorConta.GetInstance(saceContext).ObterPorSituacaoSaida(SituacaoConta.SITUACAO_ABERTA, (long)contaE.codSaida).ToList().Count == 0)
                 {
                     _saidaE.codSituacaoPagamentos = SituacaoPagamentos.QUITADA;
                     IEnumerable <Conta> contas         = GerenciadorConta.GetInstance(saceContext).ObterPorSaida(_saidaE.codSaida);
                     List <long>         listaCodContas = new List <long>();
                     foreach (Conta conta in contas)
                     {
                         listaCodContas.Add(conta.CodConta);
                     }
                     decimal somaMovimentacoes = 0;
                     IEnumerable <MovimentacaoConta> listaMovimentacoes = ObterPorContas(listaCodContas);
                     foreach (MovimentacaoConta movimentacao in listaMovimentacoes)
                     {
                         somaMovimentacoes += movimentacao.Valor;
                     }
                     GerenciadorSaida.GetInstance(saceContext).AtualizarTipoPedidoGeradoPorSaida(_saidaE.codTipoSaida, _saidaE.pedidoGerado, _saidaE.tipoDocumentoFiscal, somaMovimentacoes, _saidaE.codSaida);
                     //_saidaE.totalAVista = somaMovimentacoes;
                 }
                 else
                 {
                     _saidaE.codSituacaoPagamentos = SituacaoPagamentos.LANCADOS;
                 }
             }
             saceContext.SaveChanges();
         }
     }
 }
예제 #8
0
 /// <summary>
 /// Atribui entidade à entidade persistente
 /// </summary>
 /// <param name="conta"></param>
 /// <param name="_conta"></param>
 private void Atribuir(Conta conta, ContaE _conta)
 {
     _conta.codConta        = conta.CodConta;
     _conta.codEntrada      = conta.CodEntrada;
     _conta.codPagamento    = conta.CodPagamento;
     _conta.codPessoa       = conta.CodPessoa;
     _conta.codPlanoConta   = conta.CodPlanoConta;
     _conta.codSaida        = conta.CodSaida;
     _conta.codSituacao     = conta.CodSituacao.ToString();
     _conta.dataVencimento  = conta.DataVencimento;
     _conta.desconto        = conta.Desconto;
     _conta.observacao      = conta.Observacao;
     _conta.numeroDocumento = conta.NumeroDocumento;
     _conta.formatoConta    = conta.FormatoConta;
     _conta.valor           = conta.Valor;
 }
예제 #9
0
        /// <summary>
        /// Insere conta na base de dados
        /// </summary>
        /// <param name="conta"></param>
        /// <returns></returns>
        public Int64 Inserir(Conta conta)
        {
            try
            {
                ContaE _conta = new ContaE();
                Atribuir(conta, _conta);

                repConta.Inserir(_conta);
                saceContext.SaveChanges();

                return(_conta.codConta);
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
예제 #10
0
        /// <summary>
        /// Atualizar dados da conta no banco de dados.
        /// </summary>
        /// <param name="codSituacao">nova situação da conta</param>
        /// <param name="codConta">conta pesquisada</param>
        public void AtualizarDadosCartaoCredito(Conta conta)
        {
            try
            {
                var query = from contaSet in saceContext.ContaSet
                            where contaSet.codConta == conta.CodConta
                            select contaSet;
                ContaE _conta = query.ToList().ElementAtOrDefault(0);
                Atribuir(conta, _conta);

                saceContext.SaveChanges();
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
예제 #11
0
        /// <summary>
        /// Atualizar dados da conta no banco de dados.
        /// </summary>
        /// <param name="codSituacao">nova situação da conta</param>
        /// <param name="codConta">conta pesquisada</param>
        public void Atualizar(string codSituacao, long codConta)
        {
            try
            {
                var query = from contaSet in saceContext.ContaSet
                            where contaSet.codConta == codConta
                            select contaSet;
                ContaE _conta = query.ToList().ElementAtOrDefault(0);
                _conta.codSituacao = codSituacao;

                saceContext.SaveChanges();
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
예제 #12
0
        /// <summary>
        /// Atualiza dados da conta no banco de dados
        /// </summary>
        /// <param name="conta"></param>
        public void Atualizar(Conta conta)
        {
            if ((conta.CodEntrada != 1) || (conta.CodSaida != 1))
            {
                throw new NegocioException("Essa conta não pode ser alterada por estar associada a uma entrada / saída.");
            }

            try
            {
                var repConta = new RepositorioGenerico <ContaE>();

                ContaE _conta = repConta.ObterEntidade(c => c.codConta == conta.CodConta);
                Atribuir(conta, _conta);

                repConta.SaveChanges();
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
예제 #13
0
        public void Atualizar(long codPessoa, DateTime dataVencimento, string formatoConta,
                              string nsuTransacao, decimal valor, long codConta)
        {
            try
            {
                var query = from contaSet in saceContext.ContaSet
                            where contaSet.codConta == codConta
                            select contaSet;

                ContaE _conta = query.ToList().ElementAtOrDefault(0);
                _conta.codPessoa       = codPessoa;
                _conta.dataVencimento  = dataVencimento;
                _conta.formatoConta    = formatoConta;
                _conta.numeroDocumento = nsuTransacao.ToString();
                _conta.valor           = valor;

                saceContext.SaveChanges();
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
예제 #14
0
        /// <summary>
        /// Atualiza Situacao dos pagamentos da entrada para quitado quando todas as contas estão quitadas
        /// </summary>
        /// <param name="_contaE"></param>
        private void AtualizaSituacaoPagamentosEntrada(ContaE _contaE)
        {
            var query = from entrada in saceContext.EntradaSet
                        where entrada.codEntrada == _contaE.codEntrada
                        select entrada;
            EntradaE _entradaE = query.ToList().ElementAtOrDefault(0);

            if (_entradaE != null)
            {
                if (!_contaE.codEntrada.Equals(Global.ENTRADA_PADRAO))
                {
                    if (GerenciadorConta.GetInstance(saceContext).ObterPorSituacaoEntrada(SituacaoConta.SITUACAO_ABERTA, (long)_contaE.codEntrada).ToList().Count == 0)
                    {
                        _entradaE.codSituacaoPagamentos = SituacaoPagamentos.QUITADA;
                    }
                    else
                    {
                        _entradaE.codSituacaoPagamentos = SituacaoPagamentos.LANCADOS;
                    }
                }
            }
            saceContext.SaveChanges();
        }