public AccountTransactionDocument CreateDocument(Account account, string description, decimal amount, decimal exchangeRate, IList<AccountData> accounts, IList<ForeignCurrency> currencies)
        {
            var result = new AccountTransactionDocument { Name = Name, DocumentTypeId = Id };
            foreach (var accountTransactionType in TransactionTypes)
            {
                var transaction = AccountTransaction.Create(accountTransactionType);
                var amountRate = GetExchangeRate(accountTransactionType.ForeignCurrencyId, currencies);
                amount = amount * amountRate;
                transaction.UpdateAmount(amount, exchangeRate, accounts);
                transaction.UpdateAccount(MasterAccountTypeId, account.Id);
                if (accounts != null && accounts.Count > 0)
                {
                    if (transaction.SourceAccountTypeId != MasterAccountTypeId &&
                        transaction.SourceTransactionValue.AccountId == 0)
                    {
                        var ac = accounts.FirstOrDefault(x => x.AccountTypeId == transaction.SourceAccountTypeId);
                        if (ac != null) transaction.SetSourceAccount(ac.AccountTypeId, ac.AccountId);
                    }

                    if (transaction.TargetAccountTypeId != MasterAccountTypeId &&
                        transaction.TargetTransactionValue.AccountId == 0)
                    {
                        var ac = accounts.FirstOrDefault(x => x.AccountTypeId == transaction.TargetAccountTypeId);
                        if (ac != null) transaction.SetTargetAccount(ac.AccountTypeId, ac.AccountId);
                    }
                }
                if (!string.IsNullOrEmpty(description))
                {
                    transaction.UpdateDescription(description);
                }
                result.AccountTransactions.Add(transaction);
            }
            return result;
        }
 public AccountTransactionViewModel(IWorkspace workspace, AccountTransaction model, AccountTransactionDocument document)
 {
     Model = model ?? AccountTransaction.Null;
     _document = document;
     _workspace = workspace;
     _accountTransactionType =
         AccountTransactionTypes.SingleOrDefault(x => x.Id == Model.AccountTransactionTypeId);
 }
Beispiel #3
0
 public void UpdateCalculationTransaction(AccountTransactionDocument document, decimal amount, decimal exchangeRate)
 {
     document.UpdateSingletonTransactionAmount(AccountTransactionTypeId, Name, amount, exchangeRate);
     if (amount == 0 && Amount == 0 && document.AccountTransactions.Any(x => x.AccountTransactionTypeId == AccountTransactionTypeId))
     {
         document.AccountTransactions.Remove(
             document.AccountTransactions.Single(x => x.AccountTransactionTypeId == AccountTransactionTypeId));
     }
 }
        public AccountTransactionDocument CreateDocument(Account account, string description, decimal amount, decimal exchangeRate, IList <Account> accounts)
        {
            // <pex>
            if (account == null)
            {
                throw new ArgumentNullException("account");
            }
            if (account.AccountTypeId != MasterAccountTypeId)
            {
                throw new ArgumentException("Account Type should match Master Account Type");
            }
            // </pex>

            var result = new AccountTransactionDocument {
                Name = Name
            };

            foreach (var accountTransactionType in TransactionTypes)
            {
                var transaction = AccountTransaction.Create(accountTransactionType);
                transaction.Name = description;
                transaction.UpdateAmount(amount, exchangeRate);
                transaction.UpdateAccounts(MasterAccountTypeId, account.Id);
                if (accounts != null && accounts.Count > 0)
                {
                    if (transaction.SourceAccountTypeId != MasterAccountTypeId &&
                        transaction.SourceTransactionValue.AccountId == 0)
                    {
                        Account ac =
                            accounts.FirstOrDefault(x => x.AccountTypeId == transaction.SourceAccountTypeId);
                        if (ac != null)
                        {
                            transaction.SetSourceAccount(ac.AccountTypeId, ac.Id);
                        }
                    }
                    if (transaction.TargetAccountTypeId != MasterAccountTypeId &&
                        transaction.TargetTransactionValue.AccountId == 0)
                    {
                        Account ac =
                            accounts.FirstOrDefault(x => x.AccountTypeId == transaction.TargetAccountTypeId);
                        if (ac != null)
                        {
                            transaction.SetTargetAccount(ac.AccountTypeId, ac.Id);
                        }
                    }
                }
                result.AccountTransactions.Add(transaction);
            }
            return(result);
        }
 public AccountTransactionDocument CreateDocument(Account account, string description, decimal amount)
 {
     Debug.Assert(account.AccountTemplateId == MasterAccountTemplateId);
     var result = new AccountTransactionDocument { Name = Name };
     foreach (var accountTransactionTemplate in TransactionTemplates)
     {
         var transaction = AccountTransaction.Create(accountTransactionTemplate);
         transaction.Name = description;
         transaction.Amount = amount;
         if (transaction.SourceTransactionValue.AccountTemplateId == MasterAccountTemplateId)
             transaction.SetSoruceAccount(account.AccountTemplateId, account.Id);
         if (transaction.TargetTransactionValue.AccountTemplateId == MasterAccountTemplateId)
             transaction.SetTargetAccount(account.AccountTemplateId, account.Id);
         result.AccountTransactions.Add(transaction);
     }
     return result;
 }
        public AccountTransactionDocument CreateDocument(Account account, string description, decimal amount, decimal exchangeRate, IList <AccountData> accounts, IList <ForeignCurrency> currencies)
        {
            var result = new AccountTransactionDocument {
                Name = Name, DocumentTypeId = Id
            };

            foreach (var accountTransactionType in TransactionTypes)
            {
                var transaction = AccountTransaction.Create(accountTransactionType);
                var amountRate  = GetExchangeRate(accountTransactionType.ForeignCurrencyId, currencies);
                amount = amount * amountRate;
                transaction.UpdateAmount(amount, exchangeRate, accounts);
                transaction.UpdateAccount(MasterAccountTypeId, account.Id);
                if (accounts != null && accounts.Count > 0)
                {
                    if (transaction.SourceAccountTypeId != MasterAccountTypeId &&
                        transaction.SourceTransactionValue.AccountId == 0)
                    {
                        var ac = accounts.FirstOrDefault(x => x.AccountTypeId == transaction.SourceAccountTypeId);
                        if (ac != null)
                        {
                            transaction.SetSourceAccount(ac.AccountTypeId, ac.AccountId);
                        }
                    }

                    if (transaction.TargetAccountTypeId != MasterAccountTypeId &&
                        transaction.TargetTransactionValue.AccountId == 0)
                    {
                        var ac = accounts.FirstOrDefault(x => x.AccountTypeId == transaction.TargetAccountTypeId);
                        if (ac != null)
                        {
                            transaction.SetTargetAccount(ac.AccountTypeId, ac.AccountId);
                        }
                    }
                }
                if (!string.IsNullOrEmpty(description))
                {
                    transaction.UpdateDescription(description);
                }
                result.AccountTransactions.Add(transaction);
            }
            return(result);
        }
        public AccountTransactionDocument CreateDocument(Account account, string description, decimal amount, decimal exchangeRate, IList<Account> accounts)
        {
            // <pex>
            if (account == null)
                throw new ArgumentNullException("account");
            if (account.AccountTypeId != MasterAccountTypeId)
                throw new ArgumentException("Account Type should match Master Account Type");
            // </pex>

            var result = new AccountTransactionDocument { Name = Name };
            foreach (var accountTransactionType in TransactionTypes)
            {
                var transaction = AccountTransaction.Create(accountTransactionType);
                transaction.Name = description;
                transaction.UpdateAmount(amount, exchangeRate);
                transaction.UpdateAccounts(MasterAccountTypeId, account.Id);
                if (accounts != null && accounts.Count > 0)
                {
                    if (transaction.SourceAccountTypeId != MasterAccountTypeId &&
                        transaction.SourceTransactionValue.AccountId == 0)
                    {
                        Account ac =
                            accounts.FirstOrDefault(x => x.AccountTypeId == transaction.SourceAccountTypeId);
                        if (ac != null) transaction.SetSourceAccount(ac.AccountTypeId, ac.Id);
                    }
                    if (transaction.TargetAccountTypeId != MasterAccountTypeId &&
                        transaction.TargetTransactionValue.AccountId == 0)
                    {
                        Account ac =
                            accounts.FirstOrDefault(x => x.AccountTypeId == transaction.TargetAccountTypeId);
                        if (ac != null) transaction.SetTargetAccount(ac.AccountTypeId, ac.Id);
                    }
                }
                result.AccountTransactions.Add(transaction);
            }
            return result;
        }
 public string[] GetFormattedDocument(AccountTransactionDocument document, PrinterTemplate printerTemplate)
 {
     var content = _valueChanger.GetValue(printerTemplate, document);
     content = UpdateExpressions(content);
     return content.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToArray();
 }