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