Skip to content

Commit

Permalink
breaking: Fixed Paypal GPC transactions converter
Browse files Browse the repository at this point in the history
  • Loading branch information
anion0278 committed Apr 3, 2024
1 parent 6f37af3 commit 35eb7b5
Show file tree
Hide file tree
Showing 46 changed files with 1,395 additions and 26,744 deletions.
2 changes: 1 addition & 1 deletion Mapp.BusinessLogic.Invoices.Tests/IntegrationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,6 @@ private async Task IntegrationTestBase(string testCaseDataDirName, int startingO
//Assert.Equal(expectedResult, result);
}

public IntegrationTests(): base(){ }
public IntegrationTests() : base() { }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<inv:date>2021-10-20</inv:date>
<inv:dateTax>2021-10-25</inv:dateTax>
<inv:dateAccounting>2021-10-20</inv:dateAccounting>
<inv:dateDue>2021-10-23</inv:dateDue>
<inv:dateDue>2022-10-23</inv:dateDue>
<inv:accounting>
<typ:ids>3Fv</typ:ids>
</inv:accounting>
Expand Down
27 changes: 10 additions & 17 deletions Mapp.BusinessLogic.Invoices/Transactions/GpcGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@ public class GpcGenerator : IGpcGenerator

private string _transactionBase = "07500000020013539{0}000000000000000000000000000000000{1}{2}{3}00000000000000000000000000{4}000124{5}";
private readonly IFileManager _fileManager;
private readonly IDateTimeManager _dateTimeManager;

public GpcGenerator(IFileManager fileManager)
public GpcGenerator(IFileManager fileManager, IDateTimeManager dateTimeManager)
{
_fileManager = fileManager;
_dateTimeManager = dateTimeManager;
}

public void SaveTransactions(IEnumerable<Transaction> transactions, string fileName)
Expand All @@ -41,28 +43,19 @@ public void SaveTransactions(IEnumerable<Transaction> transactions, string fileN
_fileManager.WriteAllTextToFile(fileName, outputText.ToString());
}

private string GetShortVariableCodeForRefund(string fullVariableCode) // TODO remove repetition
{
// refunds are filled manually in pohoda, so there is no need to care about invoice symVar
string filteredCode = fullVariableCode.RemoveAll("-");
filteredCode = filteredCode.Substring(0, 10);
return filteredCode;
}

private string GetTransactionLine(Transaction transaction)
{
var shortVariableCode = Invoice.GetShortVariableCode(transaction.OrderId, out var zerosRemoved);
var shortVariableCode = VariableCode.GetShortVariableCode(transaction.OrderId);
if (transaction.Type == TransactionTypes.Refund) // Refunds have short variable codes from first 10 symbols
{
shortVariableCode = GetShortVariableCodeForRefund(transaction.OrderId);
zerosRemoved = 0;
shortVariableCode = VariableCode.GetShortVariableCode(transaction.OrderId);
}

shortVariableCode = shortVariableCode.PadLeft(VariableCode.ShortVariableCodeLength, '0');

string type = ((int)transaction.Type).ToString();
// in case that order ID contained zeros at the beginning
type = type.PadRight(type.Length + zerosRemoved, '0');

string marketPlace = transaction.MarketplaceId.ToString().PadLeft(2, '0');
string marketPlace = transaction.MarketplaceId.ToString().PadLeft(2, '0'); // max 2

string orderId = transaction.OrderId.PadRight(19, '0');

Expand Down Expand Up @@ -90,9 +83,9 @@ private string FormatPrice(decimal price)
return priceFormatted;
}

private static DateTime GetEndOfCurrentMonth()
private DateTime GetEndOfCurrentMonth()
{
var today = DateTime.Today;
var today = _dateTimeManager.Today;
return today.AddDays(1 - today.Day).AddMonths(1).AddDays(-1).Date;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;

namespace Mapp.BusinessLogic.Transactions
{
[DebuggerDisplay("{Name}")]
public class MarketPlaceTransactionsConfig
{
public string Name { get; set; }

public MarketPlaceTransactionsConfig(string dateCultureInfoName, string dateSubstring, int marketPlaceId)
{
DateCultureInfoName = dateCultureInfoName;
Expand Down Expand Up @@ -48,7 +52,7 @@ public CultureInfo DateCultureInfo
}

// it is decided to use this phrase because parameter Market place can be unavailable (no transactions)
public string DistinctionPhrase { get; set; }
public IEnumerable<string> DistinctionPhrases { get; set; }

public string DateSubstring { get; }

Expand Down
17 changes: 11 additions & 6 deletions Mapp.BusinessLogic.Invoices/Transactions/TransactionsReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ private IEnumerable<MarketPlaceTransactionsConfig> GetAvailableMarketplaceConfig
{
// TODO load only once
var mapperConfiguration = new MapperConfiguration(cfg => {
cfg.CreateMap<MarketPlaceTransactionsConfigDTO, MarketPlaceTransactionsConfig>();
cfg.CreateMap<MarketPlaceTransactionsConfigData, MarketPlaceTransactionsConfig>();
});
IMapper mapper = mapperConfiguration.CreateMapper();

var configsData = _jsonManager.LoadTransactionsConfigs();

var configs = configsData.Select(dto =>
mapper.Map<MarketPlaceTransactionsConfigDTO, MarketPlaceTransactionsConfig>(dto));
var configs = configsData.Select(data =>
mapper.Map<MarketPlaceTransactionsConfigData, MarketPlaceTransactionsConfig>(data));

var marketPlaceIds = configs.Select(s => s.MarketPlaceId).ToList();
if (marketPlaceIds.Distinct().Count() != marketPlaceIds.Count())
Expand Down Expand Up @@ -139,7 +139,7 @@ private IEnumerable<Transaction> ReadTransactions(string fileName)
}

// DATE
string dateComplete = String.Empty;
string dateComplete = string.Empty;
foreach (var columnName in marketPlaceSetting.DateTimeColumnNames)
{
dateComplete += transactionsDict[columnName][index] + " ";
Expand Down Expand Up @@ -192,13 +192,18 @@ private MarketPlaceTransactionsConfig GetMarketPlaceSetting(IReadOnlyList<string
// put into factory
foreach (var marketPlace in _marketplaceConfigs)
{
var found = dataLines.SingleOrDefault(l => l.First().EqualsIgnoreCase(marketPlace.DistinctionPhrase));
if (found != null)
var isFound = IsFirstLineCorrespondToConfig(dataLines, marketPlace);
if (isFound)
{
return marketPlace;
}
}
throw new ArgumentException("Nerozpoznany typ souboru");
}

private static bool IsFirstLineCorrespondToConfig(IReadOnlyList<string[]> dataLines, MarketPlaceTransactionsConfig marketPlace)
{
return dataLines.Any(l => !marketPlace.DistinctionPhrases.Except(l).Any());
}
}
}
Empty file.
Loading

0 comments on commit 35eb7b5

Please sign in to comment.