private void SplitHandler(LedgerTransaction t, XmlNode splitNode) { foreach (XmlNode node in splitNode.ChildNodes) { LedgerTransactionSplit s = new LedgerTransactionSplit(); foreach (XmlNode innerNode in node.ChildNodes) { switch (innerNode.LocalName) { case "id": s.GnuCashIdentifier = new Guid(innerNode.InnerText); break; case "memo": s.Memo = innerNode.InnerText; break; case "reconciled-state": s.ReconciledState = innerNode.InnerText; break; case "value": string[] parts = innerNode.InnerText.Split('/'); decimal amount = int.Parse(parts[0]) / (decimal)int.Parse(parts[1]); s.Amount = amount; break; case "account": Guid accountGuid = new Guid(innerNode.InnerText); //search Dictionary<string, object> hqlParams = new Dictionary<string, object>(); hqlParams.Add("accountGuid", accountGuid); LedgerAccount a = Core.Data.Find.FindByHql<LedgerAccount>(-1, "from LedgerAccount a where a.GnuCashIdentifier = :accountGuid", hqlParams); s.Account = a; break; default: int i = 1; break; } } t.AddSplit(s); } }
public virtual void AddSplit(LedgerTransactionSplit s) { s.ParentTransaction = this; _splits.Add(s); }