mirror of
https://github.com/stokebob/bnhtrade.git
synced 2026-03-19 06:27:15 +00:00
Bug fixes in converting invoice to gbp method
This commit is contained in:
@@ -113,14 +113,14 @@ namespace bnhtrade.Core.Logic.Account
|
|||||||
// convert line items
|
// convert line items
|
||||||
var lineWeighting = new List<(int, decimal)>();
|
var lineWeighting = new List<(int, decimal)>();
|
||||||
var lineCalculatedTotalByWeighting = new List<(int, decimal)>();
|
var lineCalculatedTotalByWeighting = new List<(int, decimal)>();
|
||||||
decimal newLineSum = 0;
|
decimal convertedLineListSum = 0;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (var line in invoice.InvoiceLineList)
|
foreach (var line in invoice.InvoiceLineList)
|
||||||
{
|
{
|
||||||
decimal weighting = line.LineTotalAmount / invoiceOriginalTotalAmount;
|
decimal weighting = line.LineTotalAmount / invoiceOriginalTotalAmount;
|
||||||
decimal lineCalculatedTotal = invoiceOriginalTotalAmount * weighting;
|
decimal lineConvertedTotal = existingRate.ConvertToGbp(invoiceOriginalTotalAmount * weighting);
|
||||||
lineWeighting.Add(new(i, weighting));
|
lineWeighting.Add(new(i, weighting));
|
||||||
lineCalculatedTotalByWeighting.Add(new(i, lineCalculatedTotal));
|
lineCalculatedTotalByWeighting.Add(new(i, lineConvertedTotal));
|
||||||
|
|
||||||
// edit line
|
// edit line
|
||||||
if (line.TaxAmountAdjust != 0)
|
if (line.TaxAmountAdjust != 0)
|
||||||
@@ -128,17 +128,17 @@ namespace bnhtrade.Core.Logic.Account
|
|||||||
line.TaxAmountAdjust = existingRate.ConvertToGbp(line.TaxAmountAdjust);
|
line.TaxAmountAdjust = existingRate.ConvertToGbp(line.TaxAmountAdjust);
|
||||||
}
|
}
|
||||||
line.UnitAmount = null;
|
line.UnitAmount = null;
|
||||||
line.SetUnitAmountByLineTotal(decimal.Round(lineCalculatedTotal, 2));
|
line.SetUnitAmountByLineTotal(decimal.Round(lineConvertedTotal, 2));
|
||||||
newLineSum += line.LineTotalAmount;
|
convertedLineListSum += line.LineTotalAmount;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// there may be rounding errors
|
// there may be rounding errors
|
||||||
// section untested - may have to fix some bugs in here when I've got some invoice to test on
|
// section untested - may have to fix some bugs in here when I've got some invoice to test on
|
||||||
if (invoiceOriginalTotalAmount != newLineSum)
|
if (invoice.InvoiceTotalAmount != convertedLineListSum)
|
||||||
{
|
{
|
||||||
decimal amountRemainingToDistribute = invoiceOriginalTotalAmount - newLineSum;
|
decimal amountRemainingToDistribute = invoice.InvoiceTotalAmount.Value - convertedLineListSum;
|
||||||
lineWeighting = lineWeighting.OrderByDescending(i => i.Item2).ToList();
|
lineWeighting = lineWeighting.OrderByDescending(i => i.Item2).ToList();
|
||||||
|
|
||||||
foreach (var line in lineWeighting)
|
foreach (var line in lineWeighting)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace bnhtrade.Core.Test.Account
|
|||||||
{
|
{
|
||||||
public Account()
|
public Account()
|
||||||
{
|
{
|
||||||
UpdateHmrcExchageRates();
|
InoivceCurrencyConversion();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateHmrcExchageRates()
|
public void UpdateHmrcExchageRates()
|
||||||
@@ -41,5 +41,21 @@ namespace bnhtrade.Core.Test.Account
|
|||||||
read.AccountJournalId = new List<uint> { 123, 300, 324, 5678, 22 };
|
read.AccountJournalId = new List<uint> { 123, 300, 324, 5678, 22 };
|
||||||
var result = read.Read();
|
var result = read.Read();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void InoivceCurrencyConversion()
|
||||||
|
{
|
||||||
|
var invoiceService = new bnhtrade.Core.Logic.Export.AccountInvoice.QueueService();
|
||||||
|
var invoiceList = invoiceService.ReadInvoiceById(new List<int> { 349, 371, 375, 379 });
|
||||||
|
var currencyService = new bnhtrade.Core.Logic.Account.CurrencyService();
|
||||||
|
|
||||||
|
foreach (var invoice in invoiceList.Values.ToList())
|
||||||
|
{
|
||||||
|
if (currencyService.ConvertInvoiceToGbp(invoice) == false)
|
||||||
|
{
|
||||||
|
throw new Exception(currencyService.ErrorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int i = 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user