Exemple #1
0
        public void TestAtBogføringslinjeAddTilføjerBogføringslinjer()
        {
            // Hent regnskab og find nødvendige konti.
            var adresselisteHelper   = new AdresselisteHelper(_adresseRepository.AdresseGetAll());
            var brevhovedlisteHelper = new BrevhovedlisteHelper(_fællesRepository.BrevhovedGetAll());
            var regnskab             = _finansstyringRepository.RegnskabGet(1, brevhovedlisteHelper.GetById,
                                                                            adresselisteHelper.GetById);
            var kontoDankort = regnskab.Konti.OfType <Konto>().Single(m => m.Kontonummer == "DANKORT");
            var budgetkontoØvrigeUdgifter = regnskab.Konti.OfType <Budgetkonto>().Single(m => m.Kontonummer == "8990");
            var bogføringer = budgetkontoØvrigeUdgifter.Bogføringslinjer.Count();

            // Opret bogføringer.
            var result1 = _finansstyringRepository.BogføringslinjeAdd(DateTime.Now, null, kontoDankort,
                                                                      "Test fra Repositories", budgetkontoØvrigeUdgifter,
                                                                      5000M, 0M, null);

            Assert.That(result1, Is.Not.Null);
            Assert.That(result1.Løbenummer, Is.GreaterThan(0));
            var result2 = _finansstyringRepository.BogføringslinjeAdd(DateTime.Now, null, kontoDankort,
                                                                      "Test fra Repositories", budgetkontoØvrigeUdgifter,
                                                                      0M, 5000M, null);

            Assert.That(result2, Is.Not.Null);
            Assert.That(result2.Løbenummer, Is.GreaterThan(0));

            // Genindlæs regnskab og find nødvendige konti.
            regnskab = _finansstyringRepository.RegnskabGet(1, brevhovedlisteHelper.GetById, adresselisteHelper.GetById);
            budgetkontoØvrigeUdgifter = regnskab.Konti.OfType <Budgetkonto>().Single(m => m.Kontonummer == "8990");
            Assert.That(budgetkontoØvrigeUdgifter.Bogføringslinjer.Count(), Is.EqualTo(bogføringer + 2));
        }
Exemple #2
0
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Kommand til oprettelse af en bogføringslinje.</param>
        /// <returns>Oprettet bogføringslinje.</returns>
        public BogføringslinjeView Execute(BogføringslinjeAddCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException("command");
            }

            Regnskab regnskab;

            try
            {
                var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));
                regnskab = _finansstyringRepository.RegnskabGetAll(getBrevhoved)
                           .Single(m => m.Nummer == command.Regnskabsnummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Regnskab),
                                                       command.Regnskabsnummer), ex);
            }
            Konto konto;

            try
            {
                konto = regnskab.Konti
                        .OfType <Konto>()
                        .Single(m => m.Kontonummer.CompareTo(command.Kontonummer) == 0);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Konto),
                                                       command.Kontonummer), ex);
            }
            Budgetkonto budgetkonto = null;

            if (!string.IsNullOrEmpty(command.Budgetkontonummer))
            {
                try
                {
                    budgetkonto = regnskab.Konti
                                  .OfType <Budgetkonto>()
                                  .Single(m => m.Kontonummer.CompareTo(command.Budgetkontonummer) == 0);
                }
                catch (InvalidOperationException ex)
                {
                    throw new DataAccessSystemException(
                              Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Budgetkonto),
                                                           command.Budgetkontonummer), ex);
                }
            }
            AdresseBase adresse = null;

            if (command.AdresseId != 0)
            {
                try
                {
                    adresse = _adresseRepository.AdresseGetAll()
                              .Single(m => m.Nummer == command.AdresseId);
                }
                catch (InvalidOperationException ex)
                {
                    throw new DataAccessSystemException(
                              Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(AdresseBase),
                                                           command.AdresseId), ex);
                }
            }

            var bogføringslinje = _finansstyringRepository.BogføringslinjeAdd(command.Bogføringsdato, command.Bilag,
                                                                              konto, command.Tekst, budgetkonto,
                                                                              command.Debit, command.Kredit, adresse);

            var oldValue = Bogføringslinje.AutoCalculate;

            try
            {
                Bogføringslinje.SætAutoCalculate(true);
                return(_objectMapper.Map <Bogføringslinje, BogføringslinjeView>(bogføringslinje));
            }
            finally
            {
                Bogføringslinje.SætAutoCalculate(oldValue);
            }
        }