public AccountingEntry(string description, AccountingTitle accountingTitle, CurrencyType currencyType, ElementChangeDirection?elementChangeDirection, decimal amount, int?tenantId)
            : this()
        {
            Description       = description;
            AccountingTitle   = accountingTitle;
            AccountingTitleId = accountingTitle.Id;
            CurrencyType      = currencyType;
            TenantId          = tenantId;
            switch (accountingTitle.AccountingElementType)
            {
            case AccountingElementType.Asset:
                BalanceDirectionType = elementChangeDirection == ElementChangeDirection.Increase ? BalanceDirection.Debit : BalanceDirection.Credit;
                Amount = Math.Abs(amount);
                break;

            case AccountingElementType.Liability:
            case AccountingElementType.OwnersEquity:
                BalanceDirectionType = elementChangeDirection == ElementChangeDirection.Increase ? BalanceDirection.Credit : BalanceDirection.Debit;
                Amount = Math.Abs(amount);
                break;

            case AccountingElementType.Revenue:
                BalanceDirectionType = BalanceDirection.Credit;
                Amount = elementChangeDirection == ElementChangeDirection.Increase ? Math.Abs(amount): -Math.Abs(amount);
                break;

            case AccountingElementType.Expense:
            case AccountingElementType.Cost:
                BalanceDirectionType = BalanceDirection.Debit;
                Amount = elementChangeDirection == ElementChangeDirection.Increase ? Math.Abs(amount) : -Math.Abs(amount);
                break;
            }
        }
 public AccountingEntry(int voucherNumber, string description, AccountingTitle accountingTitle, CurrencyType currencyType, ElementChangeDirection elementChangeDirection, decimal amount, int?tenantId)
     : this(description, accountingTitle, currencyType, elementChangeDirection, amount, tenantId)
 {
     VoucherNumber = voucherNumber;
 }