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)); }
/// <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); } }