コード例 #1
0
 public TestTransaction(GeneralLedgerEntryNumber referenceNumber, Debit[]?debits = null,
                        Credit[]?credits = null)
 {
     ReferenceNumber = referenceNumber;
     _debits         = debits ?? Array.Empty <Debit>();
     _credits        = credits ?? Array.Empty <Credit>();
 }
コード例 #2
0
        public Task entry_date_not_in_current_or_next_period_throws(
            GeneralLedgerEntryIdentifier generalLedgerEntryIdentifier, GeneralLedgerEntryNumber generalLedgerEntryNumber,
            LocalDate openedOn)
        {
            var createdOn = openedOn.PlusMonths(2).AtMidnight();

            return(new Scenario()
                   .Given(GeneralLedger.Identifier,
                          new GeneralLedgerOpened {
                OpenedOn = Time.Format.LocalDate(openedOn)
            })
                   .When(new PostGeneralLedgerEntry {
                GeneralLedgerEntryId = generalLedgerEntryIdentifier.ToGuid(),
                Period = AccountingPeriod.Open(openedOn).Next().Next().ToString(),
                BusinessTransaction = new TestTransaction(generalLedgerEntryNumber),
                CreatedOn = createdOn.ToDateTimeUnspecified()
            })
                   .Throws(new GeneralLedgerEntryNotInPeriodException(generalLedgerEntryNumber, createdOn,
                                                                      AccountingPeriod.Open(openedOn).Next()))
                   .Assert(new GeneralLedgerEntryHandlers(new GeneralLedgerTestRepository(_facts),
                                                          new GeneralLedgerEntryTestRepository(_facts), _ => false), _facts));
        }
コード例 #3
0
        public Task unposted_entry_throws(LocalDate openedOn, GeneralLedgerEntryNumber generalLedgerEntryNumber,
                                          EquityAccount retainedEarnings, GeneralLedgerEntryIdentifier generalLedgerEntryIdentifier,
                                          GeneralLedgerEntryIdentifier closingGeneralLedgerEntryIdentifier)
        {
            var period    = AccountingPeriod.Open(openedOn);
            var closingOn = openedOn.AtMidnight();

            var accountingPeriodClosing = new AccountingPeriodClosing {
                Period    = period.ToString(),
                ClosingOn = Time.Format.LocalDateTime(closingOn),
                RetainedEarningsAccountNumber = retainedEarnings.AccountNumber.ToInt32(),
                ClosingGeneralLedgerEntryId   = closingGeneralLedgerEntryIdentifier.ToGuid(),
                GeneralLedgerEntryIds         = new[] { generalLedgerEntryIdentifier.ToGuid() }
            };

            return(new Scenario()
                   .Given(GeneralLedger.Identifier,
                          new GeneralLedgerOpened {
                OpenedOn = Time.Format.LocalDate(openedOn)
            },
                          accountingPeriodClosing)
                   .Given(ChartOfAccounts.Identifier,
                          new AccountDefined {
                AccountName = retainedEarnings.AccountName.ToString(),
                AccountNumber = retainedEarnings.AccountNumber.ToInt32()
            })
                   .Given(GeneralLedgerEntry.FormatStreamIdentifier(generalLedgerEntryIdentifier),
                          new GeneralLedgerEntryCreated {
                GeneralLedgerEntryId = generalLedgerEntryIdentifier.ToGuid(),
                Number = generalLedgerEntryNumber.ToString(),
                Period = period.ToString(),
                CreatedOn = Time.Format.LocalDateTime(openedOn.AtMidnight())
            })
                   .When(accountingPeriodClosing)
                   .Throws(new GeneralLedgerEntryWasNotPostedException(generalLedgerEntryIdentifier))
                   .Assert(_handler, _facts));
        }