Exemplo n.º 1
0
        public void Settle(Bill bill, User user)
        {
            Require.NotNull(bill, "bill");
            Require.NotNull(user, "user");

            if (bill.IsSettled)
            {
                return;
            }

            foreach (BillUserGroupDebitor billUserGroupDebitor in bill.UserGroupDebitors)
            {
                if (!billUserGroupDebitor.UserGroupMembership.Equals(bill.Creditor))
                {
                    BookingService.Book(billUserGroupDebitor.UserGroupMembership.Account,
                                        bill.Creditor.Account,
                                        bill.GetPartialAmountByPortion(billUserGroupDebitor.Portion),
                                        string.Format("{0}: {1}", bill.Id, bill.Subject));
                }
            }

            bill.Settle(new EntityChangedDto(user, DateTime.Now));
            LogManager.GetLogger <BillService>().Info($"Die Rechnung mit der Nummer {bill.Id} und dem Betreff {bill.Subject} wurde abgerechnet.");
        }