예제 #1
0
        public async Task <Recebimento> Apply(Consolidacao consolidacao, Lancamento lancamento)
        {
            var contaBancaria = _contas.FindAll(new ContaBancaria.ByNumero(lancamento.ContaDestino)).FirstOrDefault();

            if (contaBancaria == null)
            {
                throw new Exception("Conta Bancária inválida");
            }

            if (!contaBancaria.Tipo.Equals(lancamento.TipoConta))
            {
                throw new Exception("Tipo de conta inválido");
            }

            var recebimento = new Recebimento
            {
                ContaBancaria = contaBancaria,
                Em            = lancamento.Em,
                Valor         = lancamento.Valor,
            };

            consolidacao.Recebimentos.Add(recebimento);

            _lancamentos.AddRecebimento(recebimento);

            return(recebimento);
        }
예제 #2
0
        public async Task <Pagamento> Apply(Consolidacao consolidacao, Lancamento lancamento)
        {
            try
            {
                var contaBancaria = _contas.FindAll(new ContaBancaria.ByNumero(lancamento.ContaDestino)).FirstOrDefault();
                var saldo         = _calcularSaldo.Apply(contaBancaria);

                if (contaBancaria == null)
                {
                    throw new Exception("Conta Bancária inválida");
                }

                if (!contaBancaria.Tipo.Equals(lancamento.TipoConta))
                {
                    throw new Exception("Tipo de conta inválido");
                }

                var pagamento = new Pagamento(lancamento, contaBancaria);

                if (!saldo.Has(pagamento.Valor))
                {
                    throw new Exception("Não há limite disponível");
                }

                _lancamentos.AddPagamento(pagamento);

                consolidacao.Pagamentos.Add(pagamento);

                return(pagamento);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #3
0
        public async Task <Consolidacao> Apply(Consolidacao consolidacao, ContaBancaria contaBancaria)
        {
            var encargos = await _calcularEncargos.Apply(contaBancaria);

            if (encargos != null)
            {
                consolidacao.Pagamentos.Add(encargos);
            }
            consolidacao.Situacao = ProcessamentoConsolidacao.Processada;
            return(consolidacao);
        }