From dcefda0de1359487b7fd0fd138e0d407ee917f15 Mon Sep 17 00:00:00 2001 From: Volodymyr Khmelovskyi Date: Tue, 21 Feb 2023 18:47:46 +0200 Subject: [PATCH] Add Raiffeisen PDF support (#18) * Add Raiffeisen PDF support * Minor recepies parser fixes --- src/Financier.Adapter/EntityExtensions.cs | 25 +- src/Financier.Adapter/EntityReader.cs | 19 +- src/Financier.Adapter/packages.config | 18 -- src/Financier.Common/Entities/DbManual.cs | 22 +- src/Financier.Common/Financier.Common.csproj | 4 +- .../Model/AccountFilterModel.cs | 6 + src/Financier.DataAccess/Data/Account.cs | 4 + .../Scripts/SQL_alter_files.Designer.cs | 11 +- .../DataBase/Scripts/SQL_alter_files.resx | 3 + ...0901_1220_add_lastaccounttransactionid.sql | 1 + .../Financier.DataAccess.csproj | 6 +- src/Financier.DataAccess/FinancierDatabase.cs | 1 + .../Utils/IgnoreAttribute.cs | 11 + .../Financier.Desktop.csproj | 10 +- src/Financier.Desktop/Helpers/ABankHelper.cs | 79 +++---- .../Helpers/BankHelperBase.cs | 52 +++++ .../Helpers/BankHelperFactory.cs | 1 + .../Helpers/RaiffeisenHelper.cs | 104 +++++++++ .../Helpers/RecipiesHelper.cs | 36 ++- .../Images/raifaisenbank.png | Bin 0 -> 1460 bytes src/Financier.Desktop/MainWindow.xaml | 6 +- src/Financier.Desktop/MainWindowVM.cs | 12 +- .../Properties/GlobalAssemblyInfo.cs | 6 +- .../Wizards/BankTransaction.cs | 22 +- .../Wizards/MonoWizard/MonoWizardVM.cs | 12 +- .../Wizards/MonoWizard/Page1VM.cs | 4 +- .../Wizards/MonoWizard/Page2.xaml | 14 +- .../Wizards/MonoWizard/Page2VM.cs | 19 +- .../Wizards/MonoWizard/Page3VM.cs | 88 ++++++- .../Wizards/RecipesWizard/Page1VM.cs | 4 +- .../Wizards/RecipesWizard/RecipesFormatter.cs | 4 +- .../Financier.Reports.csproj | 6 +- .../BackupWriterTests.cs | 2 +- .../Financier.Adapter.Tests.csproj | 8 +- .../Financier.Common.Test.csproj | 6 +- .../Financier.DataAccess.Tests.csproj | 8 +- .../Financier.Desktop.Tests/Assets/abank.pdf | Bin 545269 -> 573823 bytes .../Assets/mono.eng.transfer.csv | 7 + .../Assets/raiffeisen.pdf | Bin 0 -> 119029 bytes .../Financier.Desktop.Tests.csproj | 19 +- .../Pages/FinancierVMTest.cs | 220 +++++++++++------- .../Wizards/Mono/MonoWizardVMTest.cs | 118 ++++++++-- .../Wizards/Mono/Page1VMTest.cs | 6 +- .../Wizards/Mono/Page2VMTest.cs | 16 +- .../Wizards/Recipes/Page1VMTest.cs | 8 +- 45 files changed, 747 insertions(+), 281 deletions(-) delete mode 100644 src/Financier.Adapter/packages.config create mode 100644 src/Financier.DataAccess/DataBase/Scripts/alter/20220901_1220_add_lastaccounttransactionid.sql create mode 100644 src/Financier.DataAccess/Utils/IgnoreAttribute.cs create mode 100644 src/Financier.Desktop/Helpers/BankHelperBase.cs create mode 100644 src/Financier.Desktop/Helpers/RaiffeisenHelper.cs create mode 100644 src/Financier.Desktop/Images/raifaisenbank.png create mode 100644 src/Tests/Financier.Desktop.Tests/Assets/mono.eng.transfer.csv create mode 100644 src/Tests/Financier.Desktop.Tests/Assets/raiffeisen.pdf diff --git a/src/Financier.Adapter/EntityExtensions.cs b/src/Financier.Adapter/EntityExtensions.cs index 2f0f6181..70d3383f 100644 --- a/src/Financier.Adapter/EntityExtensions.cs +++ b/src/Financier.Adapter/EntityExtensions.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Reflection; using System.Text; +using Financier.DataAccess.Utils; namespace Financier.Adapter { @@ -28,19 +29,23 @@ public static string ToBackupLines(this Entity entity, Dictionary columnsOrder = entityColumnsOrder[classArttr.Name]; foreach (var propertyInfo in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { - ColumnAttribute pattr = (ColumnAttribute)propertyInfo.GetCustomAttribute(typeof(ColumnAttribute)); - if (pattr != null) + IgnoreAttribute ignoreAttr = propertyInfo.GetCustomAttribute(typeof(IgnoreAttribute)) as IgnoreAttribute; + if (ignoreAttr == null) { - EntityPropertyInfo pInfo = new EntityPropertyInfo(propertyInfo) + ColumnAttribute pattr = propertyInfo.GetCustomAttribute(typeof(ColumnAttribute)) as ColumnAttribute; + if (pattr != null) { - Converter = (IPropertyConverter)Activator.CreateInstance(typeof(DefaultConverter)) - }; - pInfo.Converter.PropertyType = propertyInfo.PropertyType; + EntityPropertyInfo pInfo = new EntityPropertyInfo(propertyInfo) + { + Converter = (IPropertyConverter)Activator.CreateInstance(typeof(DefaultConverter)) + }; + pInfo.Converter.PropertyType = propertyInfo.PropertyType; - object val = propertyInfo.GetValue(entity); - if (val != null) - { - dict.Add(new KeyValuePair(columnsOrder.IndexOf(pattr.Name), $"{pattr.Name}:{pInfo.Converter.ConvertBack(val)}")); + object val = propertyInfo.GetValue(entity); + if (val != null) + { + dict.Add(new KeyValuePair(columnsOrder.IndexOf(pattr.Name), $"{pattr.Name}:{pInfo.Converter.ConvertBack(val)}")); + } } } } diff --git a/src/Financier.Adapter/EntityReader.cs b/src/Financier.Adapter/EntityReader.cs index 0abe0333..a0cd3961 100644 --- a/src/Financier.Adapter/EntityReader.cs +++ b/src/Financier.Adapter/EntityReader.cs @@ -6,6 +6,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Reflection; +using Financier.DataAccess.Utils; namespace Financier.Adapter { @@ -83,15 +84,19 @@ private IReadOnlyDictionary GetEntityTypes() entities[attr.Name] = info; foreach (PropertyInfo p in t.GetProperties()) { - ColumnAttribute pattr = (ColumnAttribute)p.GetCustomAttribute(typeof(ColumnAttribute)); - if (pattr != null) + IgnoreAttribute ignoreAttr = p.GetCustomAttribute(typeof(IgnoreAttribute)) as IgnoreAttribute; + if (ignoreAttr == null) { - EntityPropertyInfo pInfo = new EntityPropertyInfo(p) + ColumnAttribute pattr = p.GetCustomAttribute(typeof(ColumnAttribute)) as ColumnAttribute; + if (pattr != null) { - Converter = (IPropertyConverter)Activator.CreateInstance(typeof(DefaultConverter)) - }; - pInfo.Converter.PropertyType = p.PropertyType; - info.Properties[pattr.Name] = pInfo; + EntityPropertyInfo pInfo = new EntityPropertyInfo(p) + { + Converter = (IPropertyConverter)Activator.CreateInstance(typeof(DefaultConverter)) + }; + pInfo.Converter.PropertyType = p.PropertyType; + info.Properties[pattr.Name] = pInfo; + } } } } diff --git a/src/Financier.Adapter/packages.config b/src/Financier.Adapter/packages.config deleted file mode 100644 index 33fd9822..00000000 --- a/src/Financier.Adapter/packages.config +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Financier.Common/Entities/DbManual.cs b/src/Financier.Common/Entities/DbManual.cs index 9abc675f..f8840fa2 100644 --- a/src/Financier.Common/Entities/DbManual.cs +++ b/src/Financier.Common/Entities/DbManual.cs @@ -32,6 +32,8 @@ public static async Task SetupAsync(IFinancierDatabase financierDatabase) a.currency_id, a.total_amount, a.type, + a.last_transaction_id, + a.number, c.Name as currency_name FROM account a INNER JOIN currency c ON a.currency_id = c._id @@ -139,25 +141,25 @@ FROM v_report_transactions } } - public static List Account => _accounts; + public static List Account => _accounts ?? new(); - public static List Category => _category; + public static List Category => _category ?? new(); - public static List SubCategory => _category?.Where(x => x.Id > 0).ToList(); + public static List SubCategory => _category?.Where(x => x.Id > 0).ToList() ?? new(); - public static List TopCategories => _topCategory; + public static List TopCategories => _topCategory ?? new(); - public static List Currencies => _currencies; + public static List Currencies => _currencies ?? new(); - public static List Payee => _payee; + public static List Payee => _payee ?? new (); - public static List Project => _project; + public static List Project => _project ?? new(); - public static List YearMonths => _yearMonths; + public static List YearMonths => _yearMonths ?? new(); - public static List Years => _years; + public static List Years => _years ?? new(); - public static List Location => _location; + public static List Location => _location ?? new(); public static void ResetAllManuals() { diff --git a/src/Financier.Common/Financier.Common.csproj b/src/Financier.Common/Financier.Common.csproj index e0d144da..a3cf18cd 100644 --- a/src/Financier.Common/Financier.Common.csproj +++ b/src/Financier.Common/Financier.Common.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/src/Financier.Common/Model/AccountFilterModel.cs b/src/Financier.Common/Model/AccountFilterModel.cs index c3298acd..7c2ceca2 100644 --- a/src/Financier.Common/Model/AccountFilterModel.cs +++ b/src/Financier.Common/Model/AccountFilterModel.cs @@ -29,5 +29,11 @@ public class AccountFilterModel : BaseModel, IActive [Column("total_amount")] public long TotalAmount { get; set; } + + [Column("last_transaction_id")] + public int LastTransactionId { get; set; } + + [Column("number")] + public string Number { get; set; } } } \ No newline at end of file diff --git a/src/Financier.DataAccess/Data/Account.cs b/src/Financier.DataAccess/Data/Account.cs index 50bdd4e7..075abdd3 100644 --- a/src/Financier.DataAccess/Data/Account.cs +++ b/src/Financier.DataAccess/Data/Account.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics; +using Financier.DataAccess.Utils; namespace Financier.DataAccess.Data { @@ -22,6 +23,9 @@ public class Account : Entity, IIdentity [Column("last_transaction_date")] public long LastTransactionDate { get; set; } + [Column("last_transaction_id"), Ignore] + public int LastTransactionId { get; set; } + [ForeignKey("Currency")] [Column("currency_id")] public int CurrencyId { get; set; } diff --git a/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.Designer.cs b/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.Designer.cs index 8c3f90f0..df1be42b 100644 --- a/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.Designer.cs +++ b/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.Designer.cs @@ -19,7 +19,7 @@ namespace Financier.DataAccess.DataBase.Scripts { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class SQL_alter_files { @@ -804,5 +804,14 @@ internal static string _20190209_alter_entities_add_is_active { return ResourceManager.GetString("_20190209_alter_entities_add_is_active", resourceCulture); } } + + /// + /// Looks up a localized string similar to ALTER TABLE account ADD COLUMN last_transaction_id integer not null default 0;. + /// + internal static string _20220901_1220_add_lastaccounttransactionid { + get { + return ResourceManager.GetString("_20220901_1220_add_lastaccounttransactionid", resourceCulture); + } + } } } diff --git a/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.resx b/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.resx index bf9b0628..12f157cc 100644 --- a/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.resx +++ b/src/Financier.DataAccess/DataBase/Scripts/SQL_alter_files.resx @@ -316,4 +316,7 @@ alter\20190209_alter_entities_add_is_active.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + alter\20220901_1220_add_lastaccounttransactionid.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + \ No newline at end of file diff --git a/src/Financier.DataAccess/DataBase/Scripts/alter/20220901_1220_add_lastaccounttransactionid.sql b/src/Financier.DataAccess/DataBase/Scripts/alter/20220901_1220_add_lastaccounttransactionid.sql new file mode 100644 index 00000000..b86508fe --- /dev/null +++ b/src/Financier.DataAccess/DataBase/Scripts/alter/20220901_1220_add_lastaccounttransactionid.sql @@ -0,0 +1 @@ +ALTER TABLE account ADD COLUMN last_transaction_id integer not null default 0; \ No newline at end of file diff --git a/src/Financier.DataAccess/Financier.DataAccess.csproj b/src/Financier.DataAccess/Financier.DataAccess.csproj index 2f5da59d..705e0b79 100644 --- a/src/Financier.DataAccess/Financier.DataAccess.csproj +++ b/src/Financier.DataAccess/Financier.DataAccess.csproj @@ -73,6 +73,7 @@ + @@ -102,10 +103,9 @@ - - - + + diff --git a/src/Financier.DataAccess/FinancierDatabase.cs b/src/Financier.DataAccess/FinancierDatabase.cs index c520f3eb..07018a2c 100644 --- a/src/Financier.DataAccess/FinancierDatabase.cs +++ b/src/Financier.DataAccess/FinancierDatabase.cs @@ -150,6 +150,7 @@ public async Task RebuildAccountBalanceAsync(int accountId) acc.TotalAmount = balance; var lastTransaction = transactions.LastOrDefault(); acc.LastTransactionDate = lastTransaction?.DateTime ?? 0; + acc.LastTransactionId = lastTransaction?.Id ?? 0; context.Accounts.Update(acc); await context.SaveChangesAsync(); } diff --git a/src/Financier.DataAccess/Utils/IgnoreAttribute.cs b/src/Financier.DataAccess/Utils/IgnoreAttribute.cs new file mode 100644 index 00000000..ad9a7cb9 --- /dev/null +++ b/src/Financier.DataAccess/Utils/IgnoreAttribute.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Financier.DataAccess.Utils +{ + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] + public class IgnoreAttribute : Attribute + { + } +} diff --git a/src/Financier.Desktop/Financier.Desktop.csproj b/src/Financier.Desktop/Financier.Desktop.csproj index fdceb8fa..2fc2a7c1 100644 --- a/src/Financier.Desktop/Financier.Desktop.csproj +++ b/src/Financier.Desktop/Financier.Desktop.csproj @@ -82,19 +82,21 @@ + + - + - - + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Financier.Desktop/Helpers/ABankHelper.cs b/src/Financier.Desktop/Helpers/ABankHelper.cs index 102e6020..d8f81624 100644 --- a/src/Financier.Desktop/Helpers/ABankHelper.cs +++ b/src/Financier.Desktop/Helpers/ABankHelper.cs @@ -13,57 +13,39 @@ namespace Financier.Desktop.Helpers { - public class ABankHelper : IBankHelper + public class ABankHelper : BankPdfHelperBase { + private const int WordsCountAfterDescription = 8; + private const int DescriptionStartIndex = 1; private const string CsvHeader = "\"Date and time\",Description,MCC,\"Card currency amount, (UAH)\",\"Operation amount\",\"Operation currency\",\"Exchange rate\",\"Commission, (UAH)\",\"Cashback amount, (UAH)\",Balance"; private const string DateRegexPattern = @"[0-3][0-9]\.[0-1][0-9]\.[0-9]{4} [0-2][0-9]:[0-5][0-9]"; private const string DoubleRegexPattern = "[+-]?\\d*\\.?\\d+"; - private const string Space = " "; - private readonly Regex dateRegex = new Regex(DateRegexPattern, RegexOptions.Singleline | RegexOptions.IgnoreCase); - private readonly Regex numberRegex = new Regex(DoubleRegexPattern, RegexOptions.Singleline | RegexOptions.IgnoreCase); + private readonly Regex dateRegex = new Regex(DateRegexPattern, RegexOptions.Singleline | RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000)); + private readonly Regex numberRegex = new Regex(DoubleRegexPattern, RegexOptions.Singleline | RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000)); - public async Task> ParseReport(string filePath) - { - if (File.Exists(filePath)) - { - StringBuilder sb = new StringBuilder(); - sb.AppendLine(CsvHeader); - using (var docReader = DocLib.Instance.GetDocReader(filePath, new PageDimensions())) - { - for (var i = 0; i < docReader.GetPageCount(); i++) - { - using (var pageReader = docReader.GetPageReader(i)) - { - var pageText = ParseTransactionsTable(pageReader.GetText().Replace(Environment.NewLine, Space)); - sb.AppendLine(pageText); - } - } - } + protected override string Header { get => CsvHeader; } - using (TextReader streamReader = new StringReader(sb.ToString())) - { - using (var csv = new CsvReader(streamReader, CultureInfo.InvariantCulture)) - { - return await csv.GetRecordsAsync().ToListAsync(); - } - } - } - return Array.Empty(); - } - - private string ParseTransactionsTable(string pageText) + protected override string ParseTransactionsTable(string pageText) { - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new (); - Match firstMatch = this.dateRegex.Matches(pageText).FirstOrDefault(); - Match lastMatch = this.numberRegex.Matches(pageText).LastOrDefault(); + Match firstMatch = this.dateRegex + .Matches(pageText) + .Skip(1) + .FirstOrDefault(); + Match lastMatch = this.numberRegex + .Matches(pageText) + .LastOrDefault(); if (firstMatch != null && lastMatch != null) { string tableText = pageText.Substring(firstMatch.Index, lastMatch.Index + lastMatch.Length - firstMatch.Index); - List tableLines = dateRegex.Matches(tableText).Select(x => x.Index).ToList(); + List tableLines = dateRegex + .Matches(tableText) + .Select(x => x.Index) + .ToList(); tableLines.Add(tableText.Length); for (int j = 1; j < tableLines.Count; j++) @@ -81,29 +63,28 @@ private string ParseTransactionsTable(string pageText) private static string AddSeparators(string line) { - var words = line.Replace(",", ".").Trim().Split(' '); - - StringBuilder sb = new StringBuilder(); - - sb.Append($"\"{words[0]} {words[1]}:00\","); + var words = line + .Replace(",", ".") + .Trim() + .Split(Space); - string end = string.Empty; - int caret = 8; - string details = string.Empty; - for (int i = words.Length - 1; i > 1; i--) + string end = string.Empty, details = string.Empty; + int caret = WordsCountAfterDescription; + for (int i = words.Length - 1; i > DescriptionStartIndex; i--) { - string word = words[i]; if (caret > 0) { - end = "," + word + end; + end = $",{words[i]}{end}"; caret--; } else { - details = word + Space + details; + details = $"{words[i]} {details}"; } } + StringBuilder sb = new(); + sb.Append($"\"{words[0]} {words[1]}:00\","); // datetime sb.Append($"\"{details.Trim()}\""); sb.Append(end); return sb.ToString(); diff --git a/src/Financier.Desktop/Helpers/BankHelperBase.cs b/src/Financier.Desktop/Helpers/BankHelperBase.cs new file mode 100644 index 00000000..2ff22507 --- /dev/null +++ b/src/Financier.Desktop/Helpers/BankHelperBase.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using CsvHelper; +using Docnet.Core.Models; +using Docnet.Core; +using Financier.Desktop.Wizards; + +namespace Financier.Desktop.Helpers +{ + public abstract class BankPdfHelperBase : IBankHelper + { + protected const string Space = " "; + protected abstract string Header { get; } + + public async Task> ParseReport(string filePath) + { + if (File.Exists(filePath)) + { + StringBuilder sb = new StringBuilder(); + sb.AppendLine(Header); + using (var docReader = DocLib.Instance.GetDocReader(filePath, new PageDimensions())) + { + for (var i = 0; i < docReader.GetPageCount(); i++) + { + using (var pageReader = docReader.GetPageReader(i)) + { + var pageText = ParseTransactionsTable(pageReader.GetText().Replace(Environment.NewLine, Space)); + sb.AppendLine(pageText.TrimEnd()); + } + } + } + + using (TextReader streamReader = new StringReader(sb.ToString())) + { + using (var csv = new CsvReader(streamReader, CultureInfo.InvariantCulture)) + { + return await csv.GetRecordsAsync().ToListAsync(); + } + } + } + return Array.Empty(); + } + + protected abstract string ParseTransactionsTable(string pageText); + } +} diff --git a/src/Financier.Desktop/Helpers/BankHelperFactory.cs b/src/Financier.Desktop/Helpers/BankHelperFactory.cs index 1c06f165..49dd55c3 100644 --- a/src/Financier.Desktop/Helpers/BankHelperFactory.cs +++ b/src/Financier.Desktop/Helpers/BankHelperFactory.cs @@ -11,6 +11,7 @@ public IBankHelper CreateBankHelper(string bank) { case "Monobank": return new MonobankHelper(); case "A-Bank": return new ABankHelper(); + case "Raiffeisen": return new RaiffeisenHelper(); default: throw new NotSupportedException("Bank not found"); } diff --git a/src/Financier.Desktop/Helpers/RaiffeisenHelper.cs b/src/Financier.Desktop/Helpers/RaiffeisenHelper.cs new file mode 100644 index 00000000..10072097 --- /dev/null +++ b/src/Financier.Desktop/Helpers/RaiffeisenHelper.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using CsvHelper; +using Docnet.Core.Models; +using Docnet.Core; +using Financier.Desktop.Wizards; +using System.Text.RegularExpressions; +using static System.Net.Mime.MediaTypeNames; + +namespace Financier.Desktop.Helpers +{ + public class RaiffeisenHelper : BankPdfHelperBase + { + private const int WordsCountAfterDescription = 4; + private const int DescriptionStartIndex = 5; + private const string CsvHeader = "\"Date and time\",Description,\"Card currency amount, (UAH)\",\"Operation amount\",\"Operation currency\",Balance"; + private const string DateRegexPattern = @"(([0-3][0-9]\.[0-1][0-9]\.[0-9]{4})\/ ([0-3][0-9]\.[0-1][0-9]\.[0-9]{4}))"; + private const string CurrencyRegexPattern = "(UAH|USD|EUR) [0-9| ]+\\,[0-9]+"; + + private static Regex lineStartRegex = new Regex(DateRegexPattern, RegexOptions.Singleline | RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000)); + private static Regex lineEndRegex = new Regex(CurrencyRegexPattern, RegexOptions.Singleline | RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000)); + + protected override string Header => CsvHeader; + + protected override string ParseTransactionsTable(string pageText) + { + StringBuilder sb = new (); + + Match firstMatch = lineStartRegex + .Matches(pageText) + .FirstOrDefault(); + Match lastMatch = lineEndRegex + .Matches(pageText) + .LastOrDefault(); + + if (firstMatch != null && lastMatch != null) + { + string tableText = pageText.Substring(firstMatch.Index, lastMatch.Index + lastMatch.Length - firstMatch.Index); + + List tableLines = lineStartRegex + .Matches(tableText) + .Select(x => x.Index) + .ToList(); + tableLines.Add(tableText.Length); + + for (int j = 1; j < tableLines.Count; j++) + { + int line = tableLines[j]; + int prevLine = tableLines[j - 1]; + string lineText = tableText.Substring(prevLine, line - prevLine); + string result = Regex.Replace(lineText, @"\s{1}([+-]?\d{1,3})\s(\d{3}\,\d{2})", @" $1$2", RegexOptions.None, TimeSpan.FromMilliseconds(1000)); + string csvText = AddSeparators(result.TrimEnd()); + sb.AppendLine(csvText); + } + } + + return sb.ToString(); + } + + private static string AddSeparators(string line) + { + // Sometimes balance is empty, add 0.0 as default value + if(line.EndsWith("UAH") || line.EndsWith("USD") || line.EndsWith("EUR")) + { + line = line + " 0.0"; + } + + var words = line + .Replace(",", ".") + .Replace("/", string.Empty) + .Replace("торговельна", string.Empty, StringComparison.InvariantCultureIgnoreCase) + .Replace("точка", string.Empty, StringComparison.InvariantCultureIgnoreCase) + .Trim() + .Split(Space) + .Where(x => !string.IsNullOrWhiteSpace(x)) + .ToList(); + + string end = string.Empty, details = string.Empty; + int caret = WordsCountAfterDescription; + for (int i = words.Count - 1; i > DescriptionStartIndex; i--) // start from end of line, and take last "WordsCountAfterDescription" words ("Card currency amount, (UAH)","Operation amount","Operation currency",Balance") + { // words in middle - became "Description" + if (caret > 0) + { + end = $",{words[i]}{end}"; + caret--; + } + else + { + details = $"{words[i]} {details}"; + } + } + StringBuilder sb = new(); + sb.Append($"\"{words[0]} 00:00:00\","); + sb.Append($"\"{details.Trim()}\""); + sb.Append(end); + return sb.ToString(); + } + } +} diff --git a/src/Financier.Desktop/Helpers/RecipiesHelper.cs b/src/Financier.Desktop/Helpers/RecipiesHelper.cs index c7b8edcf..d35d4a4b 100644 --- a/src/Financier.Desktop/Helpers/RecipiesHelper.cs +++ b/src/Financier.Desktop/Helpers/RecipiesHelper.cs @@ -1,12 +1,16 @@ using Financier.Desktop.Wizards.RecipesWizard.View; using System; +using System.Collections.Generic; using System.Linq; +using System.Text; using System.Text.RegularExpressions; namespace Financier.Desktop.Helpers { public static class RecipiesHelper { + private const int maxLineLength = 150; + public static string FormatText(string text) { if (string.IsNullOrWhiteSpace(text)) @@ -17,16 +21,38 @@ public static string FormatText(string text) var array = text.Split(new[] { Environment.NewLine }, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); var singleLine = string.Join(' ', array); - Regex numberRegex = new Regex(RecipesFormatter.Pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase); + Regex numberRegex = new Regex(RecipesFormatter.Pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000)); + + var matches = numberRegex.Matches(singleLine); - var matches = numberRegex.Matches(singleLine).Select(x => x.Value); + int currentPosition = 0; - foreach (var match in matches) + StringBuilder sb = new StringBuilder(); + + foreach (Match match in matches) { - singleLine = singleLine.Replace(match + " ", match.Replace(" ", "-") + Environment.NewLine); + var line = singleLine.Substring(currentPosition, match.Index - currentPosition); + currentPosition = match.Index + match.Length; + + string[] lines = line.Chunk(maxLineLength) + .Select(x => new string(x)) + .ToArray(); + + if (lines.Any()) + { + foreach (var item in lines.SkipLast(1)) + { + sb.AppendLine(item.Trim()); + } + sb.Append(lines.Last().TrimStart()); + } + + sb.AppendLine(match.Value.Replace(" ", "-")); } - return singleLine; + sb.AppendLine(singleLine.Substring(currentPosition).Trim()); + + return sb.ToString(); } } } diff --git a/src/Financier.Desktop/Images/raifaisenbank.png b/src/Financier.Desktop/Images/raifaisenbank.png new file mode 100644 index 0000000000000000000000000000000000000000..af2358e5cbc644195eaa491babb444f473e8cb69 GIT binary patch literal 1460 zcmV;l1xxygP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1xZOnK~!i%?U?Or z97P<*=k9j1dk=Z=jlOJJDOv(bOI1WdjZ&g52vrP9LHs8a5sL`ER9}Sp1SwGov8HL8 z)}+;3BSkbC-wFCcM0|cqE=?M*X;O1H{^mE6yM371o!Ltcg!}P*v3EQ3o6r9CyEC&( zXesr-QwzFTYC$(kE$C)R8+w7zMM9SeU4kxzE`%B+P%S424&Y~?fkGPXfDe*VLaXll z_x93HZIoKHiu8%mYdNX&+c!*bz<%oGjDv=&zd=_2a2`37BP2~kWS%~nqe~85Gbm48 z(B)sU^0RZeKTk+Xq$KIbkGR!ES0`uWY3NKzaiZW!?Tz$TpA_hZAvfln9BUUjf|2_2 zQh`=ta;ne4ZQ39g$5q)y%+2sILfxf8;g;S2N#cTWN8eLH98=?3bnk%2J>aH#*J2L*t>Q-F^B?FE^C+Ip(`!c1l-zQ2R`k}6xtVr}zd7+q9as3`_T4xM%BmoP zUM4HQn3cH}v(tWV;R<779@P>|teVi*$Q>GaQHXs`nsJoSXj)&VaYD)blJ&>d-JFbpeLvZMn>(+0=o3ElPG>Ac(&>-Lz{%&itY1w6_S3^ezLNAj_ z3FatP>=T1n0zG1oJ~W7NgTL4RbYMHhT$>!ajb$s7#UGs4Ue-Z#d_k+;>{Y5^Vo<}-xaK|3tF^%zID)&)+IpE(jrB+3yZ0Gv331)Q^)iskL=ALC z;(d1-Z({o&gnHxT6G*77q&<@o^FZ$8^-k2y+!f&v`;$c6=6zroYTeZsF^_|Nxn%V= z?102Nu9z+6KmR!XMXRqj$#ZGaTHD9Pb2uMUb|C&zM*?o`rrJKfczSaM!F30IiWBNE z^@(0Ped2Ndn#Z}vb+`@ctIQ zrT-{1M-GYHx9yggsNW3RB@ADsqnd;M=MVvzRmFrQS? z2|ldE3lc)wHJe`5&1^)l4a8iKHgX9JXnP>GSuN;hsRi9EwV<1$QtCepTq^fWx#`gW O0000=o literal 0 HcmV?d00001 diff --git a/src/Financier.Desktop/MainWindow.xaml b/src/Financier.Desktop/MainWindow.xaml index faf51a9c..40083b51 100644 --- a/src/Financier.Desktop/MainWindow.xaml +++ b/src/Financier.Desktop/MainWindow.xaml @@ -7,6 +7,7 @@ Icon="pack://application:,,,/Images/ic_launcher.png" xmlns:ViewModel="clr-namespace:Financier.Desktop.ViewModel" xmlns:View="clr-namespace:Financier.Desktop.Views" + AllowDrop="True" Loaded="RibbonWindow_Loaded"> @@ -51,7 +52,7 @@ - + @@ -144,6 +145,9 @@ + _menuNavigateCommand; private IAsyncCommand _monoCommand; private IAsyncCommand _abankCommand; + private IAsyncCommand _raiffeisenCommand; private IAsyncCommand _openBackupCommand; private IAsyncCommand _saveBackupCommand; private IAsyncCommand _saveBackupAsDbCommand; @@ -124,6 +125,8 @@ public ProjectsVM Projects public IAsyncCommand AbankCommand => _abankCommand ??= new AsyncCommand(() => OpenMonoWizardAsync("A-Bank", "pdf")); + public IAsyncCommand RaiffeisenCommand => _raiffeisenCommand ??= new AsyncCommand(() => OpenMonoWizardAsync("Raiffeisen", "pdf")); + public IAsyncCommand OpenBackupCommand => _openBackupCommand ??= new AsyncCommand(OpenBackup_Click); public IAsyncCommand SaveBackupCommand => _saveBackupCommand ??= new AsyncCommand(SaveBackup_Click); @@ -288,7 +291,14 @@ private async Task OpenMonoWizardAsync(string bank, string fileExtention) var csvHelper = this.bankFactory.CreateBankHelper(bank); var csvTransactions = await csvHelper.ParseReport(fileName); - var vm = new MonoWizardVM(csvTransactions); + Dictionary lastTransactions = new(); + foreach (var acc in DbManual.Account.Where(x => x.Id.HasValue)) + { + var last = Blotter.Entities.FirstOrDefault(x => x.Id == acc.LastTransactionId); + lastTransactions.Add(acc.Id.Value, last); + } + + var vm = new MonoWizardVM(bank, csvTransactions, lastTransactions); var output = dialogWrapper.ShowWizard(vm); diff --git a/src/Financier.Desktop/Properties/GlobalAssemblyInfo.cs b/src/Financier.Desktop/Properties/GlobalAssemblyInfo.cs index e623b0c5..0d6003a5 100644 --- a/src/Financier.Desktop/Properties/GlobalAssemblyInfo.cs +++ b/src/Financier.Desktop/Properties/GlobalAssemblyInfo.cs @@ -1,9 +1,9 @@ -//2022.6.21.6 +//2023.2.18.1 using System.Reflection; [assembly: AssemblyCompany("Financier.Desktop")] [assembly: AssemblyProduct("Financier.Desktop")] [assembly: AssemblyTitle("Financier.Desktop")] [assembly: AssemblyConfiguration("Release")] -[assembly: AssemblyFileVersion("2022.6.21.6")] -[assembly: AssemblyVersion("2022.6.21.6")] +[assembly: AssemblyFileVersion("2023.2.18.1")] +[assembly: AssemblyVersion("2023.2.18.1")] diff --git a/src/Financier.Desktop/Wizards/BankTransaction.cs b/src/Financier.Desktop/Wizards/BankTransaction.cs index 640bfbb9..cb440026 100644 --- a/src/Financier.Desktop/Wizards/BankTransaction.cs +++ b/src/Financier.Desktop/Wizards/BankTransaction.cs @@ -8,34 +8,34 @@ namespace Financier.Desktop.Wizards [DebuggerDisplay("{Description} : {CardCurrencyAmount} : {Balance}")] public class BankTransaction { - [Name("Date and time", "Дата i час операції"), TypeConverter(typeof(DateTimeConvert)), Index(0)] + [Name("Date and time", "Дата i час операції"), TypeConverter(typeof(DateTimeConvert))] public DateTime Date { get; set; } - [Name("Description", "Деталі операції"), Index(1)] + [Name("Description", "Деталі операції")] public string Description { get; set; } - [Name("MCC", "MCC"), Index(2)] + [Name("MCC", "MCC"), Optional] public string MCC { get; set; } - [Name("Card currency amount, (UAH)", "Сума в валюті картки (UAH)"), TypeConverter(typeof(DoubleConverter)), Index(3)] + [Name("Card currency amount, (UAH)", "Сума в валюті картки (UAH)"), TypeConverter(typeof(DoubleConverter))] public double CardCurrencyAmount { get; set; } - [Name("Operation amount", "Сума в валюті операції"), Index(4)] + [Name("Operation amount", "Сума в валюті операції")] public double OperationAmount { get; set; } - [Name("Operation currency", "Валюта"), Index(5)] + [Name("Operation currency", "Валюта")] public string OperationCurrency { get; set; } - [Name("Exchange rate", "Курс"), TypeConverter(typeof(DoubleConvert)), Index(6)] + [Name("Exchange rate", "Курс"), TypeConverter(typeof(DoubleConvert)), Optional] public double? ExchangeRate { get; set; } - [Name("Commission, (UAH)", "Сума комісій (UAH)"), TypeConverter(typeof(DoubleConvert)), Index(7)] + [Name("Commission, (UAH)", "Сума комісій (UAH)"), TypeConverter(typeof(DoubleConvert)), Optional] public double? Commission { get; set; } - [Name("Cashback amount, (UAH)", "Сума кешбеку (UAH)"), TypeConverter(typeof(DoubleConvert)), Index(8)] + [Name("Cashback amount, (UAH)", "Сума кешбеку (UAH)"), TypeConverter(typeof(DoubleConvert)), Optional] public double? Cashback { get; set; } - [Name("Balance", "Залишок після операції"), Index(9)] - public double Balance { get; set; } + [Name("Balance", "Залишок після операції"), Optional] + public double Balance { get; set; } = 0.0; } } \ No newline at end of file diff --git a/src/Financier.Desktop/Wizards/MonoWizard/MonoWizardVM.cs b/src/Financier.Desktop/Wizards/MonoWizard/MonoWizardVM.cs index 05ebe749..9f299d43 100644 --- a/src/Financier.Desktop/Wizards/MonoWizard/MonoWizardVM.cs +++ b/src/Financier.Desktop/Wizards/MonoWizard/MonoWizardVM.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.Json; +using Financier.Common.Model; using Financier.DataAccess.Data; namespace Financier.Desktop.Wizards.MonoWizard.ViewModel @@ -9,11 +10,14 @@ namespace Financier.Desktop.Wizards.MonoWizard.ViewModel public class MonoWizardVM : WizardBaseVM { private readonly List monoTransactions; + private readonly Dictionary lastTransactions; + private readonly string Bank; - public MonoWizardVM(IEnumerable monoTransactions) + public MonoWizardVM(string bank, IEnumerable monoTransactions, Dictionary lastTransactions) { this.monoTransactions = new(monoTransactions); - + this.Bank = bank; + this.lastTransactions = lastTransactions; CreatePages(); CurrentPage = Pages[0]; } @@ -51,8 +55,8 @@ public override void CreatePages() { _pages = new List { - new Page1VM(), - new Page2VM(monoTransactions), + new Page1VM(Bank), + new Page2VM(monoTransactions, lastTransactions), new Page3VM() }.AsReadOnly(); } diff --git a/src/Financier.Desktop/Wizards/MonoWizard/Page1VM.cs b/src/Financier.Desktop/Wizards/MonoWizard/Page1VM.cs index 45d5d428..bda4d4ba 100644 --- a/src/Financier.Desktop/Wizards/MonoWizard/Page1VM.cs +++ b/src/Financier.Desktop/Wizards/MonoWizard/Page1VM.cs @@ -9,9 +9,9 @@ public class Page1VM : WizardPageBaseVM private AccountFilterModel _monoAccount; - public Page1VM() + public Page1VM(string bank) { - MonoAccount = DbManual.Account.FirstOrDefault(x => x.IsActive && x.Title.Contains("mono", System.StringComparison.OrdinalIgnoreCase)) ?? DbManual.Account.FirstOrDefault(x => x.Id != null); + MonoAccount = DbManual.Account.FirstOrDefault(x => x.IsActive && x.Title.Contains(bank, System.StringComparison.OrdinalIgnoreCase)) ?? DbManual.Account.FirstOrDefault(x => x.Id != null); } public AccountFilterModel MonoAccount diff --git a/src/Financier.Desktop/Wizards/MonoWizard/Page2.xaml b/src/Financier.Desktop/Wizards/MonoWizard/Page2.xaml index c377557d..9790d4a6 100644 --- a/src/Financier.Desktop/Wizards/MonoWizard/Page2.xaml +++ b/src/Financier.Desktop/Wizards/MonoWizard/Page2.xaml @@ -5,6 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:converters="clr-namespace:Financier.Converters;assembly=Financier.Common" xmlns:dgx="clr-namespace:DataGridExtensions;assembly=DataGridExtensions" + xmlns:emoji="clr-namespace:Emoji.Wpf;assembly=Emoji.Wpf" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> @@ -16,6 +17,7 @@ + @@ -29,9 +31,17 @@ - + + + + + + + + - allTransactions; - public Page2VM(List records) + private readonly Dictionary lastTransactions; + public Page2VM(List records, Dictionary lastTransactions) { AllTransactions = new ObservableCollection(records); + this.lastTransactions = lastTransactions; } public ObservableCollection AllTransactions @@ -47,6 +51,7 @@ public AccountFilterModel MonoAccount RaisePropertyChanged(nameof(MonoAccount)); double balance = _monoAccount.TotalAmount / 100.0; StartTransaction = allTransactions.FirstOrDefault(x => Math.Abs(x.Balance - balance) < 0.01); + LastAccountTransaction = lastTransactions.ContainsKey(_monoAccount.Id ?? 0) ? lastTransactions[_monoAccount.Id.Value] : null; } } @@ -66,6 +71,16 @@ public BankTransaction StartTransaction } } + public BlotterModel LastAccountTransaction + { + get => _lastAccountTransaction; + set + { + _lastAccountTransaction = value; + RaisePropertyChanged(nameof(LastAccountTransaction)); + } + } + public override string Title => "Please select transaction"; public override bool IsValid() { diff --git a/src/Financier.Desktop/Wizards/MonoWizard/Page3VM.cs b/src/Financier.Desktop/Wizards/MonoWizard/Page3VM.cs index 77a6a8d0..4dc2599a 100644 --- a/src/Financier.Desktop/Wizards/MonoWizard/Page3VM.cs +++ b/src/Financier.Desktop/Wizards/MonoWizard/Page3VM.cs @@ -1,10 +1,12 @@ using Financier.Common.Entities; using Financier.Common.Model; +using Financier.DataAccess.Data; using Prism.Commands; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Text.RegularExpressions; namespace Financier.Desktop.Wizards.MonoWizard.ViewModel { @@ -15,10 +17,14 @@ public class Page3VM : WizardPageBaseVM List accounts; private AccountFilterModel _monoAccount; private ObservableCollection financierTransactions; + private static readonly Regex CardNumberRegex = new Regex(@"(\*\*\*\*)([0-9]{4})", RegexOptions.None, TimeSpan.FromMilliseconds(1000)); public Page3VM() { - Accounts = DbManual.Account.OrderByDescending(x => x.IsActive).ThenBy(x => x.SortOrder).ToList(); + Accounts = DbManual.Account + .OrderByDescending(x => x.IsActive) + .ThenBy(x => x.SortOrder) + .ToList(); } public DelegateCommand DeleteCommand @@ -83,20 +89,22 @@ public void SetMonoTransactions(List transactions) List transToAdd = new List(); foreach (var x in transactions) { - var locationId = DbManual.Location.Where(x => x.Id > 0).FirstOrDefault(l => !string.IsNullOrEmpty(l.Title) && l.Title.Contains(x.Description, StringComparison.OrdinalIgnoreCase) - || !string.IsNullOrEmpty(l.Address) && l.Address.Contains(x.Description, StringComparison.OrdinalIgnoreCase))?.Id ?? 0; - var categoryId = DbManual.Category.Where(x => x.Id > 0).FirstOrDefault(l => l.Title.Contains(x.Description, StringComparison.OrdinalIgnoreCase))?.Id ?? 0; + var desc = ParseDescription(x.Description); + long amount = Convert.ToInt64(x.CardCurrencyAmount * 100.0); + int toAccountId = amount < 0 ? desc.accountId : 0; + int fromAccountId = amount > 0 ? desc.accountId : 0; + var newTr = new FinancierTransactionDto { MonoAccountId = MonoAccount.Id, - FromAmount = Convert.ToInt64(x.CardCurrencyAmount * 100.0), + FromAmount = amount, OriginalFromAmount = x.ExchangeRate == null ? null : Convert.ToInt64(x.OperationAmount * 100.0), OriginalCurrencyId = x.ExchangeRate == null ? 0 : (DbManual.Currencies.FirstOrDefault(c => c.Name == x.OperationCurrency)?.Id ?? 0), - CategoryId = categoryId, - ToAccountId = 0, - FromAccountId = 0, - LocationId = locationId, - Note = locationId > 0 || categoryId > 0 ? null : x.Description, + CategoryId = desc.categoryId, + ToAccountId = toAccountId, + FromAccountId = fromAccountId, + LocationId = desc.locationId, + Note = desc.description, DateTime = new DateTimeOffset(x.Date).ToUnixTimeMilliseconds() }; transToAdd.Add(newTr); @@ -112,5 +120,65 @@ private void ClearAllNotes() item.Note = null; } } + + private (int categoryId, int locationId, int accountId, string description) ParseDescription(string description) + { + int accountId = 0, locationId = 0, categoryId = 0; + + bool parsed = TryParseLocation(description, out locationId) + || TryParseCategory(description, out categoryId) + || TryParseAccount(description, out accountId); + return (categoryId, locationId, accountId, parsed ? null : description); + } + + private static bool ContainsString(string str, string desc) + { + return str?.Contains(desc, StringComparison.OrdinalIgnoreCase) == true; + } + + private static bool TryParseLocation(string desc, out int locationId) + { + var location = DbManual.Location + .Where(x => x.Id > 0) + .FirstOrDefault(l => ContainsString(l.Title, desc) || ContainsString(l.Address, desc)); + if (location != null) + { + locationId = location.Id.Value; + return true; + } + locationId = 0; + return false; + } + + private static bool TryParseCategory(string desc, out int categoryId) + { + var category = DbManual.Category + .Where(x => x.Id > 0) + .FirstOrDefault(l => ContainsString(l.Title, desc)); + if (category != null) + { + categoryId = category.Id.Value; + return true; + } + categoryId = 0; + return false; + } + + private static bool TryParseAccount(string desc, out int accountId) + { + if (CardNumberRegex.IsMatch(desc)) + { + var acc = DbManual.Account + .FirstOrDefault(y => !string.IsNullOrWhiteSpace(y.Number) && desc.EndsWith(y.Number)); + + if (acc != null) + { + accountId = acc.Id.Value; + return true; + } + } + accountId = 0; + return false; + } } } diff --git a/src/Financier.Desktop/Wizards/RecipesWizard/Page1VM.cs b/src/Financier.Desktop/Wizards/RecipesWizard/Page1VM.cs index 785845a4..fba552db 100644 --- a/src/Financier.Desktop/Wizards/RecipesWizard/Page1VM.cs +++ b/src/Financier.Desktop/Wizards/RecipesWizard/Page1VM.cs @@ -38,7 +38,7 @@ public string Text public void CalculateCurrentAmount() { Amounts.Clear(); - var pattern = RecipesFormatter.Pattern + @"(\t|\n|\r|$)"; // fix '100600 Балтика' case then it calculates (100600 Б), no more symbols after a|b + var pattern = RecipesFormatter.Pattern + @"(\t|\n|\r|$)"; //TODO fix '100600 Балтика' case then it calculates (100600 Б), no more symbols after a|b if (!string.IsNullOrEmpty(text)) { double tmp = 0.0; @@ -46,7 +46,7 @@ public void CalculateCurrentAmount() var lines = text.Split(Environment.NewLine).Where(line => !string.IsNullOrWhiteSpace(line)); foreach (var line in lines) { - var res = Regex.Match(line, pattern, RegexOptions.IgnoreCase); + var res = Regex.Match(line, pattern, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000)); if (res.Success) { var number = res.Value.Substring(0, res.Value.Length - 2); diff --git a/src/Financier.Desktop/Wizards/RecipesWizard/RecipesFormatter.cs b/src/Financier.Desktop/Wizards/RecipesWizard/RecipesFormatter.cs index be804f8e..23210de9 100644 --- a/src/Financier.Desktop/Wizards/RecipesWizard/RecipesFormatter.cs +++ b/src/Financier.Desktop/Wizards/RecipesWizard/RecipesFormatter.cs @@ -28,7 +28,7 @@ public void SetText(FlowDocument document, string text) for (int i = 0; i < words.Length; i++) { string word = words[i]; - if (Regex.IsMatch(word, Pattern, RegexOptions.IgnoreCase)) + if (Regex.IsMatch(word, Pattern, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000))) { p.Inlines.Add(GetRun(word, Brushes.DarkRed, Brushes.Yellow)); if (i != words.Length - 1) //not last word @@ -55,7 +55,7 @@ public void SetText(FlowDocument document, string text) private static Run GetRun(string word, Brush foreground, Brush background) { - if (Regex.IsMatch(word, NumbersRegex, RegexOptions.IgnoreCase)) + if (Regex.IsMatch(word, NumbersRegex, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000))) { return GetHiglightedRun(word, foreground, background); } diff --git a/src/Financier.Reports/Financier.Reports.csproj b/src/Financier.Reports/Financier.Reports.csproj index 616ab9a8..6f312f46 100644 --- a/src/Financier.Reports/Financier.Reports.csproj +++ b/src/Financier.Reports/Financier.Reports.csproj @@ -23,11 +23,11 @@ - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Tests/Financier.Adapter.Tests/BackupWriterTests.cs b/src/Tests/Financier.Adapter.Tests/BackupWriterTests.cs index 6c3d9a82..a85273fa 100644 --- a/src/Tests/Financier.Adapter.Tests/BackupWriterTests.cs +++ b/src/Tests/Financier.Adapter.Tests/BackupWriterTests.cs @@ -45,7 +45,7 @@ public void GenerateBackup_ParseBackup_CompareGeneratedFileWithRaw() var expectedText = File.ReadAllText(expectedTextPath); Assert.True(File.Exists(actualPath)); - Assert.Equal(actualText, expectedText); + Assert.Equal(expectedText, actualText); File.Delete(actualPath); File.Delete(fileWithoutExt); diff --git a/src/Tests/Financier.Adapter.Tests/Financier.Adapter.Tests.csproj b/src/Tests/Financier.Adapter.Tests/Financier.Adapter.Tests.csproj index 9ec91ed2..7a4b03c6 100644 --- a/src/Tests/Financier.Adapter.Tests/Financier.Adapter.Tests.csproj +++ b/src/Tests/Financier.Adapter.Tests/Financier.Adapter.Tests.csproj @@ -28,14 +28,14 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Tests/Financier.Converter.Test/Financier.Common.Test.csproj b/src/Tests/Financier.Converter.Test/Financier.Common.Test.csproj index de78ef16..91d6fad2 100644 --- a/src/Tests/Financier.Converter.Test/Financier.Common.Test.csproj +++ b/src/Tests/Financier.Converter.Test/Financier.Common.Test.csproj @@ -12,9 +12,9 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Tests/Financier.DataAccess.Tests/Financier.DataAccess.Tests.csproj b/src/Tests/Financier.DataAccess.Tests/Financier.DataAccess.Tests.csproj index 48c161f9..f68d58b0 100644 --- a/src/Tests/Financier.DataAccess.Tests/Financier.DataAccess.Tests.csproj +++ b/src/Tests/Financier.DataAccess.Tests/Financier.DataAccess.Tests.csproj @@ -14,14 +14,14 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Tests/Financier.Desktop.Tests/Assets/abank.pdf b/src/Tests/Financier.Desktop.Tests/Assets/abank.pdf index 1d35907dbad77649f0e9068ccb759f63489cdd75..dd66127152718bb05988423559633ccf6fa3d0c5 100644 GIT binary patch delta 80446 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%0DyZe0%XX(l)MK(neDz-chgP+E1LI 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 z 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 BIye9T literal 0 HcmV?d00001 diff --git a/src/Tests/Financier.Desktop.Tests/Financier.Desktop.Tests.csproj b/src/Tests/Financier.Desktop.Tests/Financier.Desktop.Tests.csproj index f4122f65..8b3eabf0 100644 --- a/src/Tests/Financier.Desktop.Tests/Financier.Desktop.Tests.csproj +++ b/src/Tests/Financier.Desktop.Tests/Financier.Desktop.Tests.csproj @@ -10,6 +10,11 @@ true + + + + + PreserveNewest @@ -17,26 +22,32 @@ Always + + PreserveNewest + PreserveNewest PreserveNewest + + PreserveNewest + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Tests/Financier.Desktop.Tests/Pages/FinancierVMTest.cs b/src/Tests/Financier.Desktop.Tests/Pages/FinancierVMTest.cs index c7685dbf..dd83a70b 100644 --- a/src/Tests/Financier.Desktop.Tests/Pages/FinancierVMTest.cs +++ b/src/Tests/Financier.Desktop.Tests/Pages/FinancierVMTest.cs @@ -23,6 +23,7 @@ using Financier.Tests.Common; using Moq; using Xunit; + using Path = System.IO.Path; public class FinancierVMTest { @@ -53,21 +54,23 @@ public class FinancierVMTest public FinancierVMTest() { - this.bankMock = new Mock(MockBehavior.Strict); - this.csvMock = new Mock(MockBehavior.Strict); - this.dialogMock = new Mock(MockBehavior.Strict); - this.dbFactoryMock = new Mock(MockBehavior.Strict); - this.dbMock = new Mock(MockBehavior.Strict); - this.uowMock = new Mock(MockBehavior.Strict); - this.entityReaderMock = new Mock(MockBehavior.Strict); - this.backupWriterMock = new Mock(MockBehavior.Strict); - this.accountsRepo = new Mock>(); - this.transactionsRepo = new Mock>(); - this.categoriesRepo = new Mock>(); - this.exchangeRatesRepo = new Mock>(); - - this.dbFactoryMock.Setup(x => x.CreateDatabase()).Returns(this.dbMock.Object); - this.bankMock.Setup(x => x.CreateBankHelper(It.IsAny())).Returns(this.csvMock.Object); + this.bankMock = new (MockBehavior.Strict); + this.csvMock = new (MockBehavior.Strict); + this.dialogMock = new(MockBehavior.Strict); + this.dbFactoryMock = new(MockBehavior.Strict); + this.dbMock = new(MockBehavior.Strict); + this.uowMock = new(MockBehavior.Strict); + this.entityReaderMock = new(MockBehavior.Strict); + this.backupWriterMock = new(MockBehavior.Strict); + this.accountsRepo = new (); + this.transactionsRepo = new (); + this.categoriesRepo = new (); + this.exchangeRatesRepo = new (); + + this.dbFactoryMock.Setup(x => x.CreateDatabase()) + .Returns(this.dbMock.Object); + this.bankMock.Setup(x => x.CreateBankHelper(It.IsAny())) + .Returns(this.csvMock.Object); } [Fact] @@ -147,17 +150,17 @@ public async void SaveBackup_ReadEntitiesFromDb_ExportEntities( var vm = this.GetFinancierVM(); this.backupWriterMock.Setup(x => x.GenerateBackup(It.IsAny>(), backupPath, It.IsAny(), It.IsAny>>(), true)).Verifiable(); this.dbMock.Setup(x => x.CreateUnitOfWork()).Returns(this.uowMock.Object); - this.budgetMock = new Mock>(); - this.trAMock = new Mock>(); - this.currMock = new Mock>(); - this.locMock = new Mock>(); - this.payeeMock = new Mock>(); - this.projMock = new Mock>(); - this.trMock = new Mock>(); - this.adMock = new Mock>(); - this.caMock = new Mock>(); - this.cccdMock = new Mock>(); - this.smsMock = new Mock>(); + this.budgetMock = new (); + this.trAMock = new (); + this.currMock = new (); + this.locMock = new (); + this.payeeMock = new (); + this.projMock = new (); + this.trMock = new (); + this.adMock = new (); + this.caMock = new (); + this.cccdMock = new (); + this.smsMock = new (); this.SetupRepo(this.accountsRepo); this.SetupRepo(this.trMock); @@ -238,7 +241,7 @@ public async Task Locations_AddRaisedCancelClicked_NoNewItemAdded() this.dialogMock.Setup(x => x.ShowDialog(It.IsAny(), 240, 300, nameof(Location))).Returns(null); - this.locMock = new Mock>(); + this.locMock = new (); this.SetupRepo(this.locMock); var vm = this.GetFinancierVM(); @@ -261,7 +264,7 @@ public async Task Projects_AddRaised_NewItemAdded(TagDto result) this.dbMock.Setup(x => x.InsertOrUpdateAsync(It.IsAny())).Callback>((x) => { actual = x.ToArray(); }).Returns(Task.CompletedTask); this.dialogMock.Setup(x => x.ShowDialog(It.IsAny(), 180, 300, nameof(Project))).Returns(result); - this.projMock = new Mock>(); + this.projMock = new (); this.SetupRepo(this.projMock); var vm = this.GetFinancierVM(); @@ -283,7 +286,7 @@ public async Task Projects_AddRaisedCancelClicked_NoNewItemAdded() this.dialogMock.Setup(x => x.ShowDialog(It.IsAny(), 180, 300, nameof(Project))).Returns(null); - this.projMock = new Mock>(); + this.projMock = new (); this.SetupRepo(this.projMock); var vm = this.GetFinancierVM(); @@ -298,35 +301,13 @@ public async Task Projects_AddRaisedCancelClicked_NoNewItemAdded() public async Task MonoCommand_OpenWizard_AddNewTransaction() { await this.SetupDbManual(); - var output = new List() - { - new Transaction() - { - Id = 0, - FromAmount = 100, - CategoryId = 1, - OriginalCurrencyId = 0, - FromAccountId = 2, - OriginalFromAmount = 0, - DateTime = 1639121044000, - }, - }; var csvPath = Path.Combine(Environment.CurrentDirectory, "Assets", "mono.ukr.csv"); this.dialogMock.Setup(x => x.OpenFileDialog("csv")).Returns(csvPath); - this.dialogMock.Setup(x => x.ShowWizard(It.IsAny())).Returns(output); - this.dialogMock.Setup(x => x.ShowMessageBox("Imported 1 transactions.", "Monobank Import", false)).Returns(true); + this.dialogMock.Setup(x => x.ShowMessageBox("Imported 1 transactions.", "Monobank Import", false)) + .Returns(true); - this.SetupWizardRepos(); - this.SetupRepo(new Mock>()); - this.trMock = new Mock>(MockBehavior.Strict); - this.uowMock.Setup(x => x.GetRepository()).Returns(this.trMock.Object); - this.dbMock.Setup(x => x.AddTransactionsAsync(It.IsAny>())).Returns(Task.CompletedTask); - this.trMock.Setup(x => x.FindManyAsync(It.IsAny>>())).ReturnsAsync(new List()); - this.dbMock.Setup(x => x.RebuildAccountBalanceAsync(It.IsAny())).Returns(Task.CompletedTask); - this.dbMock.Setup(x => x.CreateUnitOfWork()).Returns(this.uowMock.Object); - this.uowMock.Setup(x => x.Dispose()); - this.csvMock.Setup(x => x.ParseReport(csvPath)).ReturnsAsync(Array.Empty()); + SetupImportWizard(csvPath); var vm = this.GetFinancierVM(); await vm.MonoCommand.ExecuteAsync(); @@ -335,6 +316,44 @@ public async Task MonoCommand_OpenWizard_AddNewTransaction() this.dbMock.Verify(); } + [Fact] + public async Task AbankCommand_OpenWizard_AddNewTransaction() + { + await this.SetupDbManual(); + + var path = Path.Combine(Environment.CurrentDirectory, "Assets", "abank.pdf"); + this.dialogMock.Setup(x => x.OpenFileDialog("pdf")).Returns(path); + this.dialogMock.Setup(x => x.ShowMessageBox("Imported 1 transactions.", "A-Bank Import", false)) + .Returns(true); + + SetupImportWizard(path); + + var vm = this.GetFinancierVM(); + await vm.AbankCommand.ExecuteAsync(); + + this.trMock.VerifyAll(); + this.dbMock.Verify(); + } + + [Fact] + public async Task RaiffeisenCommand_OpenWizard_AddNewTransaction() + { + await this.SetupDbManual(); + + var path = Path.Combine(Environment.CurrentDirectory, "Assets", "raiffaisen.pdf"); + this.dialogMock.Setup(x => x.OpenFileDialog("pdf")).Returns(path); + this.dialogMock.Setup(x => x.ShowMessageBox("Imported 1 transactions.", "Raiffeisen Import", false)) + .Returns(true); + + SetupImportWizard(path); + + var vm = this.GetFinancierVM(); + await vm.RaiffeisenCommand.ExecuteAsync(); + + this.trMock.VerifyAll(); + this.dbMock.Verify(); + } + [Fact] public async Task MonoCommand_DuplicatesFound_NoTransactionsAdded() { @@ -358,13 +377,18 @@ public async Task MonoCommand_DuplicatesFound_NoTransactionsAdded() this.SetupWizardRepos(); this.SetupRepo(new Mock>()); - this.trMock = new Mock>(MockBehavior.Strict); - this.uowMock.Setup(x => x.GetRepository()).Returns(this.trMock.Object); - this.dbMock.Setup(x => x.AddTransactionsAsync(It.IsAny>())).Returns(Task.CompletedTask); - this.trMock.Setup(x => x.FindManyAsync(It.IsAny>>())).ReturnsAsync(findManyOutput); - this.dbMock.Setup(x => x.CreateUnitOfWork()).Returns(this.uowMock.Object); + this.trMock = new (MockBehavior.Strict); + this.uowMock.Setup(x => x.GetRepository()) + .Returns(this.trMock.Object); + this.dbMock.Setup(x => x.AddTransactionsAsync(It.IsAny>())) + .Returns(Task.CompletedTask); + this.trMock.Setup(x => x.FindManyAsync(It.IsAny>>())) + .ReturnsAsync(findManyOutput); + this.dbMock.Setup(x => x.CreateUnitOfWork()) + .Returns(this.uowMock.Object); this.uowMock.Setup(x => x.Dispose()); - this.csvMock.Setup(x => x.ParseReport(csvPath)).ReturnsAsync(Array.Empty()); + this.csvMock.Setup(x => x.ParseReport(csvPath)) + .ReturnsAsync(Array.Empty()); var vm = this.GetFinancierVM(); await vm.MonoCommand.ExecuteAsync(); @@ -407,13 +431,18 @@ public async Task OpenTransaction_ExistingTransaction_UpdateTransaction( this.SetupWizardRepos(); this.SetupRepo(new Mock>()); this.SetupRepo(new Mock>()); - this.trMock = new Mock>(MockBehavior.Strict); - this.dbMock.Setup(x => x.GetOrCreateTransactionAsync(eventArgs.Id)).ReturnsAsync(transaction); - this.dbMock.Setup(x => x.GetOrCreateAsync(It.IsAny())).ReturnsAsync(new Transaction()); - this.dbMock.Setup(x => x.GetSubTransactionsAsync(It.IsAny())).ReturnsAsync(Array.Empty()); - - this.dbMock.Setup(x => x.InsertOrUpdateAsync(It.IsAny>())).Returns(Task.CompletedTask); - this.dbMock.Setup(x => x.RebuildAccountBalanceAsync(It.IsAny())).Returns(Task.CompletedTask); + this.trMock = new (MockBehavior.Strict); + this.dbMock.Setup(x => x.GetOrCreateTransactionAsync(eventArgs.Id)) + .ReturnsAsync(transaction); + this.dbMock.Setup(x => x.GetOrCreateAsync(It.IsAny())) + .ReturnsAsync(new Transaction()); + this.dbMock.Setup(x => x.GetSubTransactionsAsync(It.IsAny())) + .ReturnsAsync(Array.Empty()); + + this.dbMock.Setup(x => x.InsertOrUpdateAsync(It.IsAny>())) + .Returns(Task.CompletedTask); + this.dbMock.Setup(x => x.RebuildAccountBalanceAsync(It.IsAny())) + .Returns(Task.CompletedTask); this.dbMock.Setup(x => x.CreateUnitOfWork()).Returns(this.uowMock.Object); this.uowMock.Setup(x => x.Dispose()); this.dialogMock.Setup(x => x.ShowDialog(It.IsAny(), 640, 340, nameof(Transaction))) @@ -442,14 +471,19 @@ public async Task OpenTransaction_NoSubTransaction_UpdateTransaction( this.SetupWizardRepos(); this.SetupRepo(new Mock>()); this.SetupRepo(new Mock>()); - this.trMock = new Mock>(MockBehavior.Strict); - this.dbMock.Setup(x => x.GetOrCreateTransactionAsync(eventArgs.Id)).ReturnsAsync(transaction); - - this.dbMock.Setup(x => x.GetSubTransactionsAsync(It.IsAny())).ReturnsAsync(Array.Empty()); - - this.dbMock.Setup(x => x.InsertOrUpdateAsync(It.IsAny>())).Returns(Task.CompletedTask); - this.dbMock.Setup(x => x.CreateUnitOfWork()).Returns(this.uowMock.Object); - this.dbMock.Setup(x => x.RebuildAccountBalanceAsync(It.IsAny())).Returns(Task.CompletedTask); + this.trMock = new (MockBehavior.Strict); + this.dbMock.Setup(x => x.GetOrCreateTransactionAsync(eventArgs.Id)) + .ReturnsAsync(transaction); + + this.dbMock.Setup(x => x.GetSubTransactionsAsync(It.IsAny())) + .ReturnsAsync(Array.Empty()); + + this.dbMock.Setup(x => x.InsertOrUpdateAsync(It.IsAny>())) + .Returns(Task.CompletedTask); + this.dbMock.Setup(x => x.CreateUnitOfWork()) + .Returns(this.uowMock.Object); + this.dbMock.Setup(x => x.RebuildAccountBalanceAsync(It.IsAny())) + .Returns(Task.CompletedTask); this.uowMock.Setup(x => x.Dispose()); this.dialogMock.Setup(x => x.ShowDialog(It.IsAny(), 640, 340, nameof(Transaction))) .Returns(output); @@ -472,7 +506,7 @@ public async Task AddTransaction_NewItem_AddedToRepo( this.SetupWizardRepos(); this.SetupRepo(new Mock>()); this.SetupRepo(new Mock>()); - this.trMock = new Mock>(MockBehavior.Strict); + this.trMock = new (MockBehavior.Strict); this.dbMock.Setup(x => x.GetOrCreateTransactionAsync(0)).ReturnsAsync(transaction); this.dbMock.Setup(x => x.GetSubTransactionsAsync(It.IsAny())).ReturnsAsync(Array.Empty()); @@ -499,7 +533,7 @@ public async Task OpenTransaction_Cancel_NoUpdateTransaction(BlotterModel eventA await this.SetupDbManual(); this.SetupWizardRepos(); this.SetupRepo(new Mock>()); - this.trMock = new Mock>(MockBehavior.Strict); + this.trMock = new (MockBehavior.Strict); this.dbMock.Setup(x => x.GetOrCreateTransactionAsync(eventArgs.Id)).ReturnsAsync(transaction); this.dbMock.Setup(x => x.GetSubTransactionsAsync(It.IsAny())).ReturnsAsync(Array.Empty()); @@ -531,7 +565,7 @@ public async Task OpenTransfer_ExistingTransaction_UpdateTransaction( this.SetupRepo(new Mock>()); this.SetupRepo(new Mock>()); - this.trMock = new Mock>(MockBehavior.Strict); + this.trMock = new (MockBehavior.Strict); this.dbMock.Setup(x => x.GetOrCreateTransactionAsync(eventArgs.Id)).ReturnsAsync(transaction); this.dbMock.Setup(x => x.InsertOrUpdateAsync(It.IsAny())).Returns(Task.CompletedTask); @@ -633,5 +667,35 @@ private async Task SetupDbManual() DbManual.ResetAllManuals(); await DbManual.SetupAsync(this.dbMock.Object); } + + private void SetupImportWizard(string path) + { + var output = new List() + { + new Transaction() + { + Id = 0, + FromAmount = 100, + CategoryId = 1, + OriginalCurrencyId = 0, + FromAccountId = 2, + OriginalFromAmount = 0, + DateTime = 1639121044000, + }, + }; + + this.dialogMock.Setup(x => x.ShowWizard(It.IsAny())) + .Returns(output); + this.SetupWizardRepos(); + this.SetupRepo(new Mock>()); + this.trMock = new(MockBehavior.Strict); + this.uowMock.Setup(x => x.GetRepository()).Returns(this.trMock.Object); + this.dbMock.Setup(x => x.AddTransactionsAsync(It.IsAny>())).Returns(Task.CompletedTask); + this.trMock.Setup(x => x.FindManyAsync(It.IsAny>>())).ReturnsAsync(new List()); + this.dbMock.Setup(x => x.RebuildAccountBalanceAsync(It.IsAny())).Returns(Task.CompletedTask); + this.dbMock.Setup(x => x.CreateUnitOfWork()).Returns(this.uowMock.Object); + this.uowMock.Setup(x => x.Dispose()); + this.csvMock.Setup(x => x.ParseReport(path)).ReturnsAsync(Array.Empty()); + } } } diff --git a/src/Tests/Financier.Desktop.Tests/Wizards/Mono/MonoWizardVMTest.cs b/src/Tests/Financier.Desktop.Tests/Wizards/Mono/MonoWizardVMTest.cs index 6b0f906f..2ef453a0 100644 --- a/src/Tests/Financier.Desktop.Tests/Wizards/Mono/MonoWizardVMTest.cs +++ b/src/Tests/Financier.Desktop.Tests/Wizards/Mono/MonoWizardVMTest.cs @@ -21,7 +21,7 @@ public class MonoWizardVMTest public void Constructor_ReceiveParameters_CurrentPageNotEmpty(List mono) { DbManual.SetupTests(new List()); - var vm = new MonoWizardVM(mono); + var vm = new MonoWizardVM("Monobank", mono, new Dictionary()); Assert.NotNull(vm.CurrentPage); } @@ -31,7 +31,7 @@ public async Task LoadTransactions_UkrHeaders_TransactionsLoaded() { var csvPath = Path.Combine(Environment.CurrentDirectory, "Assets", "mono.ukr.csv"); var mono = await new Helpers.MonobankHelper().ParseReport(csvPath); - var vm = new MonoWizardVM(mono); + var vm = new MonoWizardVM("Monobank", mono, new Dictionary()); Assert.Equal(46, mono.Count()); Assert.Equal(46, ((Page2VM)vm.Pages[1]).GetMonoTransactions().Count); @@ -45,7 +45,7 @@ public async Task LoadTransactions_EngHeaders_TransactionsLoaded() DbManual.SetupTests(new List()); var csvPath = Path.Combine(Environment.CurrentDirectory, "Assets", "mono.eng.csv"); IEnumerable mono = await new Helpers.MonobankHelper().ParseReport(csvPath); - var vm = new MonoWizardVM(mono); + var vm = new MonoWizardVM("Monobank", mono, new Dictionary()); Assert.Single(((Page2VM)vm.Pages[1]).GetMonoTransactions()); Assert.NotNull(vm.CurrentPage); @@ -89,38 +89,69 @@ public async Task LoadTransactions_Abank_ExpectedTransactions() { var first = new BankTransaction { - Date = new DateTime(2022, 1, 19, 15, 55, 0, DateTimeKind.Local), - Description = "McDonald’s", - Balance = 10360.00, - MCC = "5814", + Date = new DateTime(2023, 2, 15, 9, 36, 0, DateTimeKind.Local), + Description = "АТБ", + Balance = 386.78, + MCC = "5411", Commission = 0.0, - CardCurrencyAmount = -119.00, - OperationAmount = -119.00, + CardCurrencyAmount = -71.8, + OperationAmount = -71.8, OperationCurrency = "UAH", - Cashback = 3.57, + Cashback = 0.5, }; var last = new BankTransaction { - Date = new DateTime(2022, 1, 1, 0, 1, 0, DateTimeKind.Local), - Description = "Відсотки на залишок власних коштів", - Balance = 10315.12, + Date = new DateTime(2023, 2, 3, 13, 54, 0, DateTimeKind.Local), + Description = "АТБ", + Balance = 115.81, Commission = 0.0, - MCC = "4829", - CardCurrencyAmount = 3.12, - OperationAmount = 3.12, + MCC = "5411", + CardCurrencyAmount = -129.7, + OperationAmount = -129.7, OperationCurrency = "UAH", - Cashback = 0.0, + Cashback = 0.91, }; - var csvPath = Path.Combine(Environment.CurrentDirectory, "Assets", "abank.pdf"); - IEnumerable abank = await new Helpers.ABankHelper().ParseReport(csvPath); + var path = Path.Combine(Environment.CurrentDirectory, "Assets", "abank.pdf"); + IEnumerable abank = await new Helpers.ABankHelper().ParseReport(path); - Assert.Equal(8, abank.Count()); + Assert.Equal(5, abank.Count()); Assert.Equal(JsonConvert.SerializeObject(first), JsonConvert.SerializeObject(abank.First())); Assert.Equal(JsonConvert.SerializeObject(last), JsonConvert.SerializeObject(abank.Last())); } + [Fact] + public async Task LoadTransactions_Raiffaisen_ExpectedTransactions() + { + var first = new BankTransaction + { + Date = new DateTime(2022, 11, 25, 0, 0, 0, DateTimeKind.Local), + Description = "PR644 UA LVOV", + CardCurrencyAmount = -342.57, + OperationAmount = -342.57, + OperationCurrency = "UAH", + Balance = 560.2 + }; + + var last = new BankTransaction + { + Date = new DateTime(2022, 10, 28, 0, 0, 0, DateTimeKind.Local), + Description = "SHOP ATB PR644 UA LVIV", + CardCurrencyAmount = -196.2, + OperationAmount = -196.2, + OperationCurrency = "UAH", + Balance = 880.3 + }; + + var path = Path.Combine(Environment.CurrentDirectory, "Assets", "raiffeisen.pdf"); + IEnumerable bank = await new Helpers.RaiffeisenHelper().ParseReport(path); + + Assert.Equal(11, bank.Count()); + Assert.Equal(JsonConvert.SerializeObject(first), JsonConvert.SerializeObject(bank.First())); + Assert.Equal(JsonConvert.SerializeObject(last), JsonConvert.SerializeObject(bank.Last())); + } + [Fact] public async Task MoveNextCommand_Execute3Times_TransactionsImpoted() { @@ -152,7 +183,7 @@ public async Task MoveNextCommand_Execute3Times_TransactionsImpoted() var csvPath = Path.Combine(Environment.CurrentDirectory, "Assets", "mono.ukr.csv"); var mono = await new Helpers.MonobankHelper().ParseReport(csvPath); - var vm = new MonoWizardVM(mono); + var vm = new MonoWizardVM("Monobank", mono, new Dictionary()); vm.RequestClose += (sender, args) => { output = sender as List; }; @@ -213,6 +244,51 @@ public async Task MoveNextCommand_Execute3Times_TransactionsImpoted() Assert.Equal(5, output.Count(x => x.LocationId == 205)); Assert.Equal(2, output.Count(x => x.OriginalCurrencyId == 1)); + DbManual.ResetAllManuals(); + } + + [Fact] + public async Task MoveNextCommand_ParseDescription_TransactionsImpoted() + { + List output = new (); + + List accounts = new () + { + new () { Id = 1, Title = "Monobank", TotalAmount = 189671, CurrencyId = 2, IsActive = true }, + new () { Id = 2, Title = "Cash", TotalAmount = 10000, CurrencyId = 2, IsActive = true }, + new () { Id = 3, Title = "Bank1", Number = "0544", TotalAmount = 10000, CurrencyId = 2, IsActive = true }, + new () { Id = 4, Title = "Bank2", Number = "7134", TotalAmount = 10000, CurrencyId = 2, IsActive = true }, + }; + List projects = new () { new () { Id = 1, IsActive = true, Title = "My project" } }; + List categories = new () { new () { Title = "Комуналка", Id = 1 } }; + List currencies = new () { new () { Id = 1, Name = "USD" }, new () { Id = 2, Name = "UAH" } }; + + DbManual.SetupTests(categories); + DbManual.SetupTests(currencies); + DbManual.SetupTests(accounts); + DbManual.SetupTests(projects); + + var csvPath = Path.Combine(Environment.CurrentDirectory, "Assets", "mono.eng.transfer.csv"); + var mono = await new Helpers.MonobankHelper().ParseReport(csvPath); + var vm = new MonoWizardVM("Monobank", mono, new Dictionary()); + + vm.RequestClose += (sender, args) => { output = sender as List; }; + vm.MoveNextCommand.Execute(); + vm.MoveNextCommand.Execute(); + vm.MoveNextCommand.Execute(); + + // Transfer From Mono + var fromMono = output[0]; + var toMono = output[5]; + + Assert.Equal(1, fromMono.FromAccountId); + Assert.Equal(3, fromMono.ToAccountId); + + // Transfer To Mono + Assert.Equal(4, toMono.FromAccountId); + Assert.Equal(1, toMono.ToAccountId); + + DbManual.ResetAllManuals(); } } diff --git a/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page1VMTest.cs b/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page1VMTest.cs index 5484a08f..ddbd63ee 100644 --- a/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page1VMTest.cs +++ b/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page1VMTest.cs @@ -17,7 +17,7 @@ public void Constructor_HasMonoAccount_SelectedMonoAccount(List acc } DbManual.SetupTests(accounts); - var vm = new Page1VM(); + var vm = new Page1VM("Monobank"); Assert.NotNull(vm.MonoAccount); DbManual.ResetAllManuals(); diff --git a/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page2VMTest.cs b/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page2VMTest.cs index b044c191..3ef0ff3e 100644 --- a/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page2VMTest.cs +++ b/src/Tests/Financier.Desktop.Tests/Wizards/Mono/Page2VMTest.cs @@ -12,9 +12,9 @@ public class Page2VMTest { [Theory] [AutoMoqData] - public void Constructor_ReceiveTransactions_AllTransactionsSeted(List transactions) + public void Constructor_ReceiveTransactions_AllTransactionsSeted(List transactions, Dictionary lastTransactions) { - var vm = new Page2VM(transactions); + var vm = new Page2VM(transactions, lastTransactions); Assert.Equal(transactions, vm.AllTransactions); Assert.Equal("Please select transaction", vm.Title); @@ -32,7 +32,7 @@ public void MonoAccount_BalanceMatch_StartTransactionSetted() startTr, }; - var vm = new Page2VM(transactions); + var vm = new Page2VM(transactions, new Dictionary()); vm.MonoAccount = account; Assert.Equal(startTr, vm.StartTransaction); @@ -48,7 +48,7 @@ public void MonoAccount_BalanceNotMatch_StartTransactionNotSetted() new BankTransaction() { Balance = 100.0 }, }; - var vm = new Page2VM(transactions); + var vm = new Page2VM(transactions, new Dictionary()); vm.MonoAccount = account; Assert.Equal(default, vm.StartTransaction); @@ -63,7 +63,7 @@ public void MonoTransactions_StartTransactionNotSet_MonoTransactionsReturnNotAll new BankTransaction() { Balance = 100.0, Date = new DateTime(2017, 11, 16) }, }; - var vm = new Page2VM(transactions); + var vm = new Page2VM(transactions, new Dictionary()); Assert.Single(vm.GetMonoTransactions()); } @@ -83,7 +83,7 @@ public void MonoTransactions_StartTransactionSeted_MonoTransactionsReturn3Trsnsa new BankTransaction() { Balance = 104.0, Date = new DateTime(2019, 11, 16) }, }; - var vm = new Page2VM(transactions); + var vm = new Page2VM(transactions, new Dictionary()); vm.StartTransaction = startTr; Assert.Equal(3, vm.GetMonoTransactions().Count); @@ -91,11 +91,11 @@ public void MonoTransactions_StartTransactionSeted_MonoTransactionsReturn3Trsnsa [Theory] [AutoMoqData] - public void DeleteCommand_Execute_TransactionsRemoved(List transactions) + public void DeleteCommand_Execute_TransactionsRemoved(List transactions, Dictionary lastTransactions) { var trToremove = new BankTransaction(); transactions.Add(trToremove); - var vm = new Page2VM(transactions); + var vm = new Page2VM(transactions, lastTransactions); vm.DeleteCommand.Execute(trToremove); Assert.DoesNotContain(trToremove, vm.AllTransactions); diff --git a/src/Tests/Financier.Desktop.Tests/Wizards/Recipes/Page1VMTest.cs b/src/Tests/Financier.Desktop.Tests/Wizards/Recipes/Page1VMTest.cs index 01bf4058..07a3e2d8 100644 --- a/src/Tests/Financier.Desktop.Tests/Wizards/Recipes/Page1VMTest.cs +++ b/src/Tests/Financier.Desktop.Tests/Wizards/Recipes/Page1VMTest.cs @@ -42,7 +42,7 @@ public void RecipiesHelper_FormatText_TextFormated() { var text = @" Beer Baltyka 0 50,0 A -Milk Molokia 2.5% 25.0 а +Milk Molokia 2.5% 25.0 а Milk Molokia 2.5% 25.50 A @@ -58,8 +58,10 @@ 25.50 A string expected = @"Beer Baltyka 0 50,0-A Milk Molokia 2.5% 25.0-а Milk Molokia 2.5% 25.50-A -100500.0 Балтика 100600 Discount -0.5-б -Total 100500"; +100500.0-Б +алтика 100600 Discount -0.5-б +Total 100500 +"; var actual = RecipiesHelper.FormatText(text);