protected void UpdateBalance(Entry entry)
        {
            using (_entryRepository.BeginTransaction())
            {
                //Entry
                this._entryRepository.Save(entry);

                //Account
                var account = _accountRepository.FindOrCreateBy(entry.DestinationAccount,
                                                                entry.DestinationBank,
                                                                entry.TypeAccount,
                                                                entry.DestinationIdentity);

                //Balance
                var currentBalance = _balanceRepository.FindOrCreateBy(account, entry.DateToExecute.GetValueOrDefault());


                var entryDto = new ShortEntryDTO(entry.DateEntry.GetValueOrDefault(),
                                                 entry.Value.GetValueOrDefault());


                if (entry.IsPayment())
                {
                    currentBalance.Outputs.Add(entryDto);
                    currentBalance.Total -= entryDto.Value;
                }
                else
                {
                    currentBalance.Inputs.Add(entryDto);
                    currentBalance.Total += entryDto.Value;
                }

                if (entry.FinancialCharges > 0.00m)
                {
                    currentBalance.Charges.Add(new ShortEntryDTO(entry.DateEntry.GetValueOrDefault(),
                                                                 entry.FinancialCharges.GetValueOrDefault(0)));
                    currentBalance.Total -= entry.FinancialCharges.GetValueOrDefault();
                }

                _balanceRepository.Update(currentBalance);
                _balanceRepository.UpdateCurrentAndFutureBalance(entry.DateToExecute.GetValueOrDefault(), account.Id.GetValueOrDefault());

                //Commit
                _entryRepository.Commit();
            }
        }