コード例 #1
0
        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);
        }
コード例 #2
0
        public void EraseFor(BasicTransaction bt)
        {
            List <SubProductForTransaction> lst = GetFor(bt);

            foreach (SubProductForTransaction item in lst)
            {
                Erase(item);
            }
        }
コード例 #3
0
 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)));
 }
コード例 #4
0
        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);
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: QifMapper.cs プロジェクト: blaise-braye/my-accounts
        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);
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
ファイル: CashParser.cs プロジェクト: Palpid/qif
 public override void Yield(QifDocument document)
 {
     document.CashTransactions.Add(Item);
     Item = new BasicTransaction();
 }
コード例 #11
0
ファイル: LiabilityLogic.cs プロジェクト: tolbxela/qif
        /// <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);
        }
コード例 #12
0
ファイル: LiabilityParser.cs プロジェクト: jeffjl74/qif
 public override void Yield(QifDocument document)
 {
     document.AddTransaction(GetType().Name, Item);
     Item = new BasicTransaction();
 }
コード例 #13
0
 public static string GetBankTransactionLookupKey(this BasicTransaction t)
 {
     return($"{t.Date:yyyy-MM-dd}${t.Amount:N2}");
 }
コード例 #14
0
 public bool IsTargetProcessed(BasicTransaction transaction)
 {
     return(_processedTarget.Contains(transaction));
 }
コード例 #15
0
 public void SetMultipleTargetsPossibleAction(BasicTransaction transaction)
 {
     SetAction(transaction, null, DeltaAction.MultipleTargetsPossible);
 }
コード例 #16
0
 public void SetAddAction(BasicTransaction transaction)
 {
     SetAction(transaction, null, DeltaAction.Add);
 }
コード例 #17
0
 public void SetNothingAction(BasicTransaction availableBt, BasicTransaction exportedItem)
 {
     SetAction(availableBt, exportedItem, DeltaAction.Nothing);
 }
コード例 #18
0
        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);
        }
コード例 #19
0
 public void SetNotUniqueKeyInTarget(BasicTransaction transaction)
 {
     SetAction(transaction, null, DeltaAction.NotUniqueKeyInTarget);
 }
コード例 #20
0
 public void SetUpdateMemoAction(BasicTransaction transaction, BasicTransaction targetTransaction)
 {
     SetAction(transaction, targetTransaction, DeltaAction.UpdateMemo);
 }
コード例 #21
0
 public void SetRemoveAction(BasicTransaction targetTransaction)
 {
     SetAction(null, targetTransaction, DeltaAction.Remove);
 }