diff --git a/QFXparser.TestApp/QFXparser.TestApp.csproj b/QFXparser.TestApp/QFXparser.TestApp.csproj index 6f49e8c..b78cf18 100644 --- a/QFXparser.TestApp/QFXparser.TestApp.csproj +++ b/QFXparser.TestApp/QFXparser.TestApp.csproj @@ -1,12 +1,12 @@ - + Exe - netcoreapp2.0 + net6.0 - + diff --git a/QFXparser.Testing/QFXparser.Testing.csproj b/QFXparser.Testing/QFXparser.Testing.csproj index 69b8f1c..a0b8f7a 100644 --- a/QFXparser.Testing/QFXparser.Testing.csproj +++ b/QFXparser.Testing/QFXparser.Testing.csproj @@ -1,16 +1,19 @@ - netcoreapp2.1 + net6.0 false - - - - + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/QFXparser.Testing/test.qfx b/QFXparser.Testing/test.qfx index 7c02972..c733063 100644 --- a/QFXparser.Testing/test.qfx +++ b/QFXparser.Testing/test.qfx @@ -68,11 +68,24 @@ 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 20180525000000[0:UTC] + + -267.24 + 20180525000000[0:UTC] + diff --git a/QFXparser.snk b/QFXparser.snk new file mode 100644 index 0000000..c88bee7 Binary files /dev/null and b/QFXparser.snk differ 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 4c897f0..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; /// @@ -76,6 +78,7 @@ public Statement BuildStatement() Name = rawTrans.Name, PostedOn = rawTrans.PostedOn, RefNumber = rawTrans.RefNumber, + CheckNumber = rawTrans.CheckNumber, TransactionId = rawTrans.TransactionId, Type = rawTrans.Type }; @@ -88,6 +91,12 @@ public Statement BuildStatement() AsOf = rawStatement.LedgerBalance.AsOf }; + //statement.AvailableBalance = new AvailableBalance + //{ + // Amount = rawStatement.AvailableBalance.Amount, + // AsOf = rawStatement.AvailableBalance.AsOf + //}; + return statement; } @@ -129,6 +138,7 @@ private RawStatement BuildRaw() case NodeType.TransactionProp: currentMember = result.Member; break; + case NodeType.LedgerBalanceOpen: _ledgerBalance = new RawLedgerBalance(); break; @@ -143,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; } @@ -168,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; } @@ -245,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) @@ -264,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/QFXparser.csproj b/QFXparser/QFXparser.csproj index 70b3700..1f0eb67 100644 --- a/QFXparser/QFXparser.csproj +++ b/QFXparser/QFXparser.csproj @@ -1,7 +1,7 @@ - + - netstandard2.0 + netstandard2.1 emaquest.net QFXparser QFXparser @@ -17,6 +17,8 @@ See Changelog: https://github.com/eramella/QFXparser/blob/master/CHANGELOG.md en-US + False + D:\Visual Studio\Repos\QFXparser\QFXparser.snk 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/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/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(); } } 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; } }