public SubProductForTransaction Create(SubProduct subProduct, BasicTransaction transaction) { SubProductForTransaction pbsp = new SubProductForTransaction(subProduct, transaction, 1, subProduct.Product.FinalPrice); documentXML.Element(className + "s").Add(pbsp.GetXML()); Save(); return(pbsp); }
public void EraseFor(BasicTransaction bt) { List <SubProductForTransaction> lst = GetFor(bt); foreach (SubProductForTransaction item in lst) { Erase(item); } }
public List <SubProductForTransaction> GetFor(BasicTransaction bt) { LoadFile(); return(new List <SubProductForTransaction>(from item in documentXML.Descendants(className) where item.Element("Status").Value.Equals(((int)Status.Active).ToString()) && item.Element("Transaction").Value.Equals(bt.Id.ToString()) select GetFromItem(item))); }
public void SetUpdateMemoAction(TransactionDelta originalDelta, BasicTransaction targetTransaction) { if (originalDelta.Action != DeltaAction.MultipleTargetsPossible) { throw new InvalidOperationException(); } _deltas.Remove(originalDelta); _counters[(int)originalDelta.Action]--; SetUpdateMemoAction(originalDelta.Source, targetTransaction); }
private void Modify(Guid id, SubProduct subProduct, BasicTransaction transaction, int quantity, decimal unitPrice, Status status) { XElement c = GetXElement(id); c.Element("SubProduct").Value = subProduct.Id.ToString(); c.Element("Transaction").Value = transaction.Id.ToString(); c.Element("Quantity").Value = quantity.ToString(); c.Element("UnitPrice").Value = unitPrice.ToString(); c.Element("ModificationDate").Value = DateTime.Now.ToString("yyyyMMdd"); c.Element("Status").Value = ((int)status).ToString(); Save(); }
private void SetAction(BasicTransaction transaction, BasicTransaction targetTransaction, DeltaAction action) { var transactionLookupKey = (transaction ?? targetTransaction).GetBankTransactionLookupKey(); var transactionDelta = new TransactionDelta { DeltaKey = transactionLookupKey, Source = transaction, Target = targetTransaction, Action = action, CreationDate = DateTime.Now }; AddDelta(transactionDelta); }
public static IEnumerable <BasicTransaction> ToBasicTransactions(this IEnumerable <UnifiedAccountOperation> operations) { foreach (var operation in operations) { var basicTransaction = new BasicTransaction { Number = operation.OperationId, Amount = operation.Income - operation.Outcome, Date = operation.ValueDate, Memo = BuildLabel(operation), Category = operation.Category }; yield return(basicTransaction); } }
static void Main(string[] args) { Console.WriteLine("Command"); Console.WriteLine("Bank Account Transactions Example\n"); var transactionmanager = new TransactionManager(); var bankAccount = new BankAccount(); var firstTransaction = new BasicTransaction(bankAccount, Deposit, 5000, Guid.NewGuid()); var lastTransaction = new BasicTransaction(bankAccount, Deposit, 2000, Guid.NewGuid()); transactionmanager.SendTransaction(firstTransaction); transactionmanager.SendTransaction(new BasicTransaction(bankAccount, Deposit, 10000, Guid.NewGuid())); transactionmanager.SendTransaction(new BasicTransaction(bankAccount, Withdrawal, 3000, Guid.NewGuid())); transactionmanager.SendTransaction(lastTransaction); transactionmanager.CancelTransaction(firstTransaction._identifier); transactionmanager.CancelTransaction(lastTransaction._identifier); }
public SubProductForTransaction GetFromItem(XElement item) { SubProductForTransaction result = new SubProductForTransaction(item.Element("Id").Value, subProductController.Get(new Guid(item.Element("SubProduct").Value)), null, item.Element("Quantity").Value, item.Element("UnitPrice").Value, item.Element("CreationDate").Value, item.Element("ModificationDate").Value, item.Element("Status").Value); BasicTransaction transaction = quoteController.Get(new Guid(item.Element("Transaction").Value)); if (transaction == null) { transaction = saleController.Get(new Guid(item.Element("Transaction").Value)); } result.Transaction = transaction; return(result); }
public override void Yield(QifDocument document) { document.CashTransactions.Add(Item); Item = new BasicTransaction(); }
/// <summary> /// Creates a collection of liability transactions /// </summary> /// <param name="transactionItems">The transaction delimited string</param> /// <returns>A collection of bank transactions</returns> internal static List <BasicTransaction> Import(string transactionItems) { List <BasicTransaction> result = new List <BasicTransaction>(); // Create a new bank transaction BasicTransaction lt = new BasicTransaction(); // Split the string by new lines string[] sEntries = Regex.Split(transactionItems, "$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace); // Iterate over the array for (int i = 0; i < sEntries.Length; i++) { // Extract a line entry string sEntry = sEntries[i].Replace("\r", "").Replace("\n", ""); // If the string has a value if (sEntry.Length > 0) { // Test the first value of the string switch (sEntry[0].ToString()) { case NonInvestmentAccountFields.Date: // Set the date value lt.Date = Common.GetDateTime(sEntry.Substring(1)); // Stop processing break; case NonInvestmentAccountFields.Amount: // Set the amount value lt.Amount = Common.GetDecimal(sEntry.Substring(1)); // Stop processing break; case NonInvestmentAccountFields.ClearedStatus: // Set the cleared status value lt.ClearedStatus = sEntry.Substring(1); // Stop processing break; case NonInvestmentAccountFields.Number: // Set the number value lt.Number = sEntry.Substring(1); // Stop processing break; case NonInvestmentAccountFields.Payee: // Set the payee value lt.Payee = sEntry.Substring(1); // Stop processing break; case NonInvestmentAccountFields.Memo: // Set the memo value lt.Memo = sEntry.Substring(1); // Stop processing break; case NonInvestmentAccountFields.Category: // Set the category value lt.Category = sEntry.Substring(1); // Stop processing break; case NonInvestmentAccountFields.Address: // Add the address line value lt.Address.Add(lt.Address.Count, sEntry.Substring(1)); // Stop processing break; case NonInvestmentAccountFields.SplitCategory: // Add the split category value lt.SplitCategories.Add(lt.SplitCategories.Count, sEntry.Substring(1)); // Stop processing break; case NonInvestmentAccountFields.SplitMemo: // Add the split memo value // NOTE: Using split amount count because memo is optional lt.SplitMemos.Add(lt.SplitAmounts.Count, sEntry.Substring(1)); // Stop processing break; case NonInvestmentAccountFields.SplitAmount: // Add the split amount value lt.SplitAmounts.Add(lt.SplitAmounts.Count, Common.GetDecimal(sEntry.Substring(1))); // Stop processing break; case NonInvestmentAccountFields.EndOfEntry: // Add the bank transaction instance to the collection result.Add(lt); // Call the destructor lt = null; // Create a new bank transaction lt = new BasicTransaction(); // Stop processing break; } } } return(result); }
public override void Yield(QifDocument document) { document.AddTransaction(GetType().Name, Item); Item = new BasicTransaction(); }
public static string GetBankTransactionLookupKey(this BasicTransaction t) { return($"{t.Date:yyyy-MM-dd}${t.Amount:N2}"); }
public bool IsTargetProcessed(BasicTransaction transaction) { return(_processedTarget.Contains(transaction)); }
public void SetMultipleTargetsPossibleAction(BasicTransaction transaction) { SetAction(transaction, null, DeltaAction.MultipleTargetsPossible); }
public void SetAddAction(BasicTransaction transaction) { SetAction(transaction, null, DeltaAction.Add); }
public void SetNothingAction(BasicTransaction availableBt, BasicTransaction exportedItem) { SetAction(availableBt, exportedItem, DeltaAction.Nothing); }
public void ExportTransactions(string filename) { var transactions = GetTransactions(); var wrapper = new QifDomComWrapper(); var qd = new QifDom(); foreach (var t in transactions) { // todo: proper conversion var transaction = new BasicTransaction(); transaction.Amount = (decimal)t.Amount; transaction.Date = t.Timestamp; transaction.Payee = t.FromAddress; transaction.Memo = t.ToAddress; qd.CashTransactions.Add(transaction); } qd.Export(filename); }
public void SetNotUniqueKeyInTarget(BasicTransaction transaction) { SetAction(transaction, null, DeltaAction.NotUniqueKeyInTarget); }
public void SetUpdateMemoAction(BasicTransaction transaction, BasicTransaction targetTransaction) { SetAction(transaction, targetTransaction, DeltaAction.UpdateMemo); }
public void SetRemoveAction(BasicTransaction targetTransaction) { SetAction(null, targetTransaction, DeltaAction.Remove); }