From 41516cf570fc88d4264338be37cb50d7bdd606c8 Mon Sep 17 00:00:00 2001 From: timpoll Date: Tue, 2 Nov 2021 06:58:04 -0400 Subject: [PATCH 1/7] Added Check Number --- QFXparser.Testing/test.qfx | 9 +++++++++ QFXparser/QFXparser.cs | 1 + QFXparser/RawTransaction.cs | 5 ++++- QFXparser/Transaction.cs | 1 + 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/QFXparser.Testing/test.qfx b/QFXparser.Testing/test.qfx index 7c02972..61c119a 100644 --- a/QFXparser.Testing/test.qfx +++ b/QFXparser.Testing/test.qfx @@ -68,6 +68,15 @@ NEWFILEUID:NONE REPLACE PMT FROM BILL PAYER SERVICE + + CHECK + 20210930000000 + -225.00 + 7/30/2021 12:00:00 AM|3311628 + 2022 + WITHDRAWAL, DRAFT NUMBER 2022 + , Withdrawal, Processed + -768.33 diff --git a/QFXparser/QFXparser.cs b/QFXparser/QFXparser.cs index 4c897f0..1673c5c 100644 --- a/QFXparser/QFXparser.cs +++ b/QFXparser/QFXparser.cs @@ -76,6 +76,7 @@ public Statement BuildStatement() Name = rawTrans.Name, PostedOn = rawTrans.PostedOn, RefNumber = rawTrans.RefNumber, + CheckNumber = rawTrans.CheckNumber, TransactionId = rawTrans.TransactionId, Type = rawTrans.Type }; diff --git a/QFXparser/RawTransaction.cs b/QFXparser/RawTransaction.cs index 68b50e8..418abdd 100644 --- a/QFXparser/RawTransaction.cs +++ b/QFXparser/RawTransaction.cs @@ -21,7 +21,10 @@ internal class RawTransaction [NodeName("REFNUM")] public string RefNumber { get; set; } - + + [NodeName("CHECKNUM")] + public string CheckNumber { get; set; } + [NodeName("NAME")] public string Name { get; set; } diff --git a/QFXparser/Transaction.cs b/QFXparser/Transaction.cs index a7f5a4a..c149660 100644 --- a/QFXparser/Transaction.cs +++ b/QFXparser/Transaction.cs @@ -9,6 +9,7 @@ public class Transaction public Decimal Amount { get; set; } public string TransactionId { get; set; } public string RefNumber { get; set; } + public string CheckNumber { get; set; } public string Name { get; set; } public string Memo { get; set; } } From 1f5f28f9da75004ff251526a9eaa4c0715edf488 Mon Sep 17 00:00:00 2001 From: timpoll Date: Tue, 2 Nov 2021 07:06:09 -0400 Subject: [PATCH 2/7] Upgraded QFXParser to target .NET Standard 2.1, TestApp and Testing to target .NET 5.0 --- QFXparser.TestApp/QFXparser.TestApp.csproj | 2 +- QFXparser.Testing/QFXparser.Testing.csproj | 2 +- QFXparser/QFXparser.csproj | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/QFXparser.TestApp/QFXparser.TestApp.csproj b/QFXparser.TestApp/QFXparser.TestApp.csproj index 6f49e8c..d1531a4 100644 --- a/QFXparser.TestApp/QFXparser.TestApp.csproj +++ b/QFXparser.TestApp/QFXparser.TestApp.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + net5.0 diff --git a/QFXparser.Testing/QFXparser.Testing.csproj b/QFXparser.Testing/QFXparser.Testing.csproj index 69b8f1c..8f057f5 100644 --- a/QFXparser.Testing/QFXparser.Testing.csproj +++ b/QFXparser.Testing/QFXparser.Testing.csproj @@ -1,7 +1,7 @@ - netcoreapp2.1 + net5.0 false diff --git a/QFXparser/QFXparser.csproj b/QFXparser/QFXparser.csproj index 70b3700..ecc67c1 100644 --- a/QFXparser/QFXparser.csproj +++ b/QFXparser/QFXparser.csproj @@ -1,7 +1,7 @@ - + - netstandard2.0 + netstandard2.1 emaquest.net QFXparser QFXparser From f9df0555e667ce7e9590078afe164b275f8eb517 Mon Sep 17 00:00:00 2001 From: timpoll Date: Wed, 8 Dec 2021 08:38:42 -0500 Subject: [PATCH 3/7] Attempted to add Available Balance. Not working correctly, commented out code. --- QFXparser.Testing/test.qfx | 4 +++ QFXparser/AvailableBalance.cs | 11 ++++++ QFXparser/LedgerBalance.cs | 1 - QFXparser/NodeType.cs | 5 ++- QFXparser/QFXparser.cs | 59 ++++++++++++++++++++++++++++++-- QFXparser/RawAvailableBalance.cs | 14 ++++++++ QFXparser/RawStatement.cs | 3 ++ QFXparser/Statement.cs | 1 + 8 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 QFXparser/AvailableBalance.cs create mode 100644 QFXparser/RawAvailableBalance.cs diff --git a/QFXparser.Testing/test.qfx b/QFXparser.Testing/test.qfx index 61c119a..c733063 100644 --- a/QFXparser.Testing/test.qfx +++ b/QFXparser.Testing/test.qfx @@ -82,6 +82,10 @@ NEWFILEUID:NONE -768.33 20180525000000[0:UTC] + + -267.24 + 20180525000000[0:UTC] + diff --git a/QFXparser/AvailableBalance.cs b/QFXparser/AvailableBalance.cs new file mode 100644 index 0000000..85b9492 --- /dev/null +++ b/QFXparser/AvailableBalance.cs @@ -0,0 +1,11 @@ +using System; + +namespace QFXparser +{ + //public class AvailableBalance + //{ + // public decimal Amount { get; set; } + + // public DateTime AsOf { get; set; } + //} +} \ No newline at end of file diff --git a/QFXparser/LedgerBalance.cs b/QFXparser/LedgerBalance.cs index 5876671..af30a36 100644 --- a/QFXparser/LedgerBalance.cs +++ b/QFXparser/LedgerBalance.cs @@ -5,7 +5,6 @@ namespace QFXparser public class LedgerBalance { public decimal Amount { get; set; } - public DateTime AsOf { get; set; } } } \ No newline at end of file diff --git a/QFXparser/NodeType.cs b/QFXparser/NodeType.cs index 9cac71a..3c907a8 100644 --- a/QFXparser/NodeType.cs +++ b/QFXparser/NodeType.cs @@ -14,6 +14,9 @@ internal enum NodeType TransactionProp, LedgerBalanceOpen, LedgerBalanceClose, - LedgerBalanceProp + LedgerBalanceProp, + AvailableBalanceOpen, + AvailableBalanceClose, + AvailableBalanceProp } } diff --git a/QFXparser/QFXparser.cs b/QFXparser/QFXparser.cs index 1673c5c..2c676d5 100644 --- a/QFXparser/QFXparser.cs +++ b/QFXparser/QFXparser.cs @@ -10,6 +10,8 @@ public class FileParser { private string _fileText; private RawLedgerBalance _ledgerBalance; + //private RawAvailableBalance _availableBalance; + private readonly CultureInfo _cultureInfo = CultureInfo.CurrentCulture; /// @@ -89,6 +91,12 @@ public Statement BuildStatement() AsOf = rawStatement.LedgerBalance.AsOf }; + //statement.AvailableBalance = new AvailableBalance + //{ + // Amount = rawStatement.AvailableBalance.Amount, + // AsOf = rawStatement.AvailableBalance.AsOf + //}; + return statement; } @@ -130,6 +138,7 @@ private RawStatement BuildRaw() case NodeType.TransactionProp: currentMember = result.Member; break; + case NodeType.LedgerBalanceOpen: _ledgerBalance = new RawLedgerBalance(); break; @@ -144,6 +153,22 @@ private RawStatement BuildRaw() } currentMember = result.Member; break; + + //case NodeType.AvailableBalanceOpen: + // _availableBalance = new RawAvailableBalance(); + // break; + //case NodeType.AvailableBalanceClose: + // _statement.AvailableBalance.Amount = _availableBalance.Amount; + // _statement.AvailableBalance.AsOf = _availableBalance.AsOf; + // break; + //case NodeType.AvailableBalanceProp: + // if (_availableBalance == null) + // { + // _availableBalance = new RawAvailableBalance(); + // } + // currentMember = result.Member; + // break; + default: break; } @@ -169,6 +194,10 @@ private RawStatement BuildRaw() case "RawLedgerBalance": property.SetValue(_ledgerBalance, ConvertQfxType(token.Content, property.PropertyType)); break; + //case "RawAvailableBalance": + // property.SetValue(_availableBalance, ConvertQfxType(token.Content, property.PropertyType)); + // break; + default: break; } @@ -246,6 +275,20 @@ private PropertyResult GetPropertyInfo(string token) return propertyResult; } + //if (typeof(RawAvailableBalance).GetCustomAttribute().OpenTag == token) + //{ + // propertyResult.Member = typeof(RawAvailableBalance); + // propertyResult.Type = NodeType.AvailableBalanceOpen; + // return propertyResult; + //} + + //if (typeof(RawAvailableBalance).GetCustomAttribute().CloseTag == token) + //{ + // propertyResult.Member = typeof(RawAvailableBalance); + // propertyResult.Type = NodeType.AvailableBalanceClose; + // return propertyResult; + //} + var statementMember = typeof(RawStatement).GetProperties().FirstOrDefault(m => m.GetCustomAttribute().OpenTag == token); if (statementMember != null) @@ -265,16 +308,26 @@ private PropertyResult GetPropertyInfo(string token) return propertyResult; } - var balanceMember = typeof(RawLedgerBalance).GetProperties().Where(m => m.GetCustomAttribute() != null) + var ledgerBalanceMember = typeof(RawLedgerBalance).GetProperties().Where(m => m.GetCustomAttribute() != null) .FirstOrDefault(m => m.GetCustomAttribute().OpenTag == token); - if (balanceMember != null) + if (ledgerBalanceMember != null) { - propertyResult.Member = balanceMember; + propertyResult.Member = ledgerBalanceMember; propertyResult.Type = NodeType.LedgerBalanceProp; return propertyResult; } + //var availableBalanceMember = typeof(RawAvailableBalance).GetProperties().Where(m => m.GetCustomAttribute() != null) + // .FirstOrDefault(m => m.GetCustomAttribute().OpenTag == token); + + //if (availableBalanceMember != null) + //{ + // propertyResult.Member = availableBalanceMember; + // propertyResult.Type = NodeType.AvailableBalanceProp; + // return propertyResult; + //} + return null; } } diff --git a/QFXparser/RawAvailableBalance.cs b/QFXparser/RawAvailableBalance.cs new file mode 100644 index 0000000..e266e22 --- /dev/null +++ b/QFXparser/RawAvailableBalance.cs @@ -0,0 +1,14 @@ +using System; + +namespace QFXparser +{ + //[NodeName("AVAILBAL", "/AVAILBAL")] + //public class RawAvailableBalance + //{ + // [NodeName("BALAMT")] + // public decimal Amount { get; set; } + + // [NodeName("DTASOF")] + // public DateTime AsOf { get; set; } + //} +} \ No newline at end of file diff --git a/QFXparser/RawStatement.cs b/QFXparser/RawStatement.cs index b917e79..80f7a06 100644 --- a/QFXparser/RawStatement.cs +++ b/QFXparser/RawStatement.cs @@ -15,5 +15,8 @@ internal class RawStatement [NodeName("LEDGERBAL")] public RawLedgerBalance LedgerBalance { get; set; } = new RawLedgerBalance(); + + //[NodeName("AVAILBAL")] + //public RawAvailableBalance AvailableBalance { get; set; } = new RawAvailableBalance(); } } diff --git a/QFXparser/Statement.cs b/QFXparser/Statement.cs index 45ff655..275ff37 100644 --- a/QFXparser/Statement.cs +++ b/QFXparser/Statement.cs @@ -7,5 +7,6 @@ public class Statement public string AccountNum { get; set; } public ICollection Transactions { get; set; } = new List(); public LedgerBalance LedgerBalance { get; set; } = new LedgerBalance(); + // public AvailableBalance AvailableBalance { get; set; } = new AvailableBalance(); } } From 248ec1447036b976e76f4ffb0edc2282d4c1a6cb Mon Sep 17 00:00:00 2001 From: timpoll Date: Tue, 11 Jan 2022 08:17:33 -0500 Subject: [PATCH 4/7] Updated Nuget Packages --- QFXparser.TestApp/QFXparser.TestApp.csproj | 2 +- QFXparser.Testing/QFXparser.Testing.csproj | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/QFXparser.TestApp/QFXparser.TestApp.csproj b/QFXparser.TestApp/QFXparser.TestApp.csproj index d1531a4..6115031 100644 --- a/QFXparser.TestApp/QFXparser.TestApp.csproj +++ b/QFXparser.TestApp/QFXparser.TestApp.csproj @@ -6,7 +6,7 @@ - + diff --git a/QFXparser.Testing/QFXparser.Testing.csproj b/QFXparser.Testing/QFXparser.Testing.csproj index 8f057f5..5d9c4a4 100644 --- a/QFXparser.Testing/QFXparser.Testing.csproj +++ b/QFXparser.Testing/QFXparser.Testing.csproj @@ -7,10 +7,13 @@ - - - - + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + From dff104671e8bdb0c20aa15e6b0a38e71c89d9866 Mon Sep 17 00:00:00 2001 From: timpoll Date: Thu, 13 Jan 2022 13:07:45 -0500 Subject: [PATCH 5/7] upgraded apps to .NET 6 --- QFXparser.TestApp/QFXparser.TestApp.csproj | 4 ++-- QFXparser.Testing/QFXparser.Testing.csproj | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/QFXparser.TestApp/QFXparser.TestApp.csproj b/QFXparser.TestApp/QFXparser.TestApp.csproj index 6115031..b78cf18 100644 --- a/QFXparser.TestApp/QFXparser.TestApp.csproj +++ b/QFXparser.TestApp/QFXparser.TestApp.csproj @@ -1,8 +1,8 @@ - + Exe - net5.0 + net6.0 diff --git a/QFXparser.Testing/QFXparser.Testing.csproj b/QFXparser.Testing/QFXparser.Testing.csproj index 5d9c4a4..a0b8f7a 100644 --- a/QFXparser.Testing/QFXparser.Testing.csproj +++ b/QFXparser.Testing/QFXparser.Testing.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 false From 4698c5454ba59539c37e4de1921b9fa42e8f2d8a Mon Sep 17 00:00:00 2001 From: Tim Poll Date: Thu, 16 Feb 2023 12:29:01 -0500 Subject: [PATCH 6/7] a --- QFXparser/QFXparser.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/QFXparser/QFXparser.csproj b/QFXparser/QFXparser.csproj index ecc67c1..25502c3 100644 --- a/QFXparser/QFXparser.csproj +++ b/QFXparser/QFXparser.csproj @@ -17,6 +17,7 @@ See Changelog: https://github.com/eramella/QFXparser/blob/master/CHANGELOG.md en-US + True From 2a7e2fbba44c139188955df5a11bbaee0b98bbcd Mon Sep 17 00:00:00 2001 From: Tim Poll Date: Fri, 10 Mar 2023 18:04:07 -0500 Subject: [PATCH 7/7] a --- QFXparser.snk | Bin 0 -> 596 bytes QFXparser/QFXparser.csproj | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 QFXparser.snk diff --git a/QFXparser.snk b/QFXparser.snk new file mode 100644 index 0000000000000000000000000000000000000000..c88bee7a102bb06dcdcd7e9f3b6656a72f027a36 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50097f6p}11XooD1>1iR6LO=QLHfCDS++59f zE0aiyis?*xEpT^q_2CRnK@KbD)D%sAs!H|90td=P?7&J(9~F~YXfJQQSQ?S(&>oAd zZGf;4z}-KpXrmoK#Z|Wzb>{2e15=J`YaWkV@y$EUG>)9=M;L0jbB}0=$<1yF{)Y2Q zE8gx<4%e~8bJnxXt5${5T;f)BQrVE#-EMa}YyvF8{#0KFTL(8HlxQ}*iOrltnzJsX zI)N3>aST_3`9SnnTI;fv><#CcclGiTV(5e z3zy&AXzJCYSq@qE&lg#O4zb7}W6S|fq9o1(G8Bq}BnttvZ;jnhOIK*Ols%2gK6}M2 zD`(j=t~<@If~WN$ZYNO7D6Xxy{!Q;A5#%8o`4a>gW*Ql0s)UWZSBnkic$VDn{eKux zlmpc%pAnWpar~fbK;^)}!LY9AL3h%qEpOMHymttQsNA-UW-Ea!d< iZU+`^%See Changelog: https://github.com/eramella/QFXparser/blob/master/CHANGELOG.md en-US - True + False + D:\Visual Studio\Repos\QFXparser\QFXparser.snk