diff --git a/src/bnhtrade.Core/Data/Amazon/Report/ReportLogic.cs b/src/bnhtrade.Core/Data/Amazon/Report/ReportLogic.cs
index b8a6c57..37582ca 100644
--- a/src/bnhtrade.Core/Data/Amazon/Report/ReportLogic.cs
+++ b/src/bnhtrade.Core/Data/Amazon/Report/ReportLogic.cs
@@ -86,6 +86,25 @@ namespace bnhtrade.Core.Data.Amazon.Report
ReportProcessingStatus = ProcessingStatus.NULL;
}
+
+
+
+
+
+ ///
+ /// Return a list of report that are currently available filtered parameters set in class
+ ///
+ /// report list
+ protected IList ListAvailableReports()
+ {
+ var parameters = new ParameterReportList();
+ parameters.reportTypes = new List() { reportType };
+ parameters.marketplaceIds.Add(amznConn.GetCurrentMarketplace.ID);
+
+ // request from amazon
+ return amznConn.Reports.GetReports(parameters);
+ }
+
///
/// For reports that require a start and end period to report over.
///
@@ -169,6 +188,22 @@ namespace bnhtrade.Core.Data.Amazon.Report
}
}
+ DownloadReport(reportId);
+ }
+
+ protected void DownloadByReportId(string reportId)
+ {
+ Init();
+ DownloadReport(reportId);
+ }
+
+ private void DownloadReport(string reportId)
+ {
+ if (report == null)
+ {
+ WaitWhileProcessing(reportId);
+ }
+
// test for processing status
if (report.ProcessingStatus == FikaAmazonAPI.AmazonSpApiSDK.Models.Reports.Report.ProcessingStatusEnum.DONE)
{
@@ -246,12 +281,19 @@ namespace bnhtrade.Core.Data.Amazon.Report
}
// save to file
- string reportFilePath = Config.GetTempFileDirectoryPath() + @"\SP-API-Reports\ " + report.ReportType.ToString() + " reportId_" + reportId + ".txt";
+ string dirPath = Config.GetTempFileDirectoryPath() + @"\SP-API-Reports\";
+ System.IO.Directory.CreateDirectory(dirPath);
+ string reportFilePath = dirPath + report.ReportType.ToString() + " reportId_" + reportId + ".txt";
System.IO.File.WriteAllText(reportFilePath, reportString);
log.LogInformation("Amazon report #" + reportId + " sucessfully saved to disk.");
this.ReportFilePath = reportFilePath;
}
+
+
+
+
+
///
/// If a duplicate report has been recently requested, Amazon may return 'FATAL'. This method tests for, and attempts to retrive the duplicate report that is causing the error.
///
diff --git a/src/bnhtrade.Core/Data/Amazon/Report/SettlementReport.cs b/src/bnhtrade.Core/Data/Amazon/Report/SettlementReport.cs
index aa5a684..5fc4edb 100644
--- a/src/bnhtrade.Core/Data/Amazon/Report/SettlementReport.cs
+++ b/src/bnhtrade.Core/Data/Amazon/Report/SettlementReport.cs
@@ -1,6 +1,7 @@
using bnhtrade.Core.Data.Amazon.SellingPartnerAPI;
using FikaAmazonAPI;
using FikaAmazonAPI.Parameter.Report;
+using FikaAmazonAPI.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -10,11 +11,9 @@ using static FikaAmazonAPI.Utils.Constants;
namespace bnhtrade.Core.Data.Amazon.Report
{
- public class SettlementReport
+ public class SettlementReport : ReportLogic
{
- private AmazonConnection amznConn = new SpApiConnection().Connection;
-
- public SettlementReport ()
+ public SettlementReport () : base(ReportTypes.GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE_V2)
{
}
@@ -25,28 +24,22 @@ namespace bnhtrade.Core.Data.Amazon.Report
public List ListAvaliableReports()
{
UI.Console.WriteLine("Requesting list of avaliable settlement reports form Amazon SP-API");
+ var reportList = ListAvailableReports();
- // set parameters
- var parameters = new ParameterReportList();
- parameters.reportTypes = new List() { ReportTypes.GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE_V2};
- parameters.marketplaceIds.Add(amznConn.GetCurrentMarketplace.ID);
-
- // request from amazon
- var result = amznConn.Reports.GetReports(parameters);
-
- var returnList = new List();
- foreach (var report in result)
+ var reportIdList = new List();
+ foreach (var report in reportList)
{
- returnList.Add(report.ReportId);
+ reportIdList.Add(report.ReportId);
}
UI.Console.WriteLine("{0} Settlement reports avaible on Amazon SP-API");
- return returnList;
+ return reportIdList;
}
- public string GetFile(string reportId)
+ public string GetReportFile(string reportId)
{
- return amznConn.Reports.GetReportFile(reportId);
+ DownloadByReportId(reportId);
+ return ReportFilePath;
}
}
}
diff --git a/src/bnhtrade.Core/Data/Database/Export/CreateSalesInvoice.cs b/src/bnhtrade.Core/Data/Database/Export/CreateSalesInvoice.cs
index 1714f09..38354b7 100644
--- a/src/bnhtrade.Core/Data/Database/Export/CreateSalesInvoice.cs
+++ b/src/bnhtrade.Core/Data/Database/Export/CreateSalesInvoice.cs
@@ -104,7 +104,7 @@ namespace bnhtrade.Core.Data.Database.Export
cmd.Parameters.AddWithValue("@invoiceID", invoiceId);
cmd.Parameters.AddWithValue("@itemCode", invoiceList[i].InvoiceLineList[j].ItemCode);
cmd.Parameters.AddWithValue("@netAmount", invoiceList[i].InvoiceLineList[j].UnitAmount);
- cmd.Parameters.AddWithValue("@accountCode", invoiceList[i].InvoiceLineList[j].AccountCode.AccountCode);
+ cmd.Parameters.AddWithValue("@accountCode", (int)invoiceList[i].InvoiceLineList[j].AccountCode.AccountCode);
cmd.Parameters.AddWithValue("@taxAmount", invoiceList[i].InvoiceLineList[j].TaxAmount);
cmd.Parameters.AddWithValue("@taxCode", invoiceList[i].InvoiceLineList[j].TaxCode.TaxCode);
diff --git a/src/bnhtrade.Core/Logic/Import/AmazonSettlement.cs b/src/bnhtrade.Core/Logic/Import/AmazonSettlement.cs
index 8cea48d..8530c81 100644
--- a/src/bnhtrade.Core/Logic/Import/AmazonSettlement.cs
+++ b/src/bnhtrade.Core/Logic/Import/AmazonSettlement.cs
@@ -1,4 +1,5 @@
-using System.Linq;
+using bnhtrade.Core.Data.Amazon.Report;
+using System.Linq;
namespace bnhtrade.Core.Logic.Import
{
@@ -10,6 +11,7 @@ namespace bnhtrade.Core.Logic.Import
public AmazonSettlement()
{
+ amazonReport = new Data.Amazon.Report.SettlementReport();
}
public void SyncDatabase()
@@ -53,12 +55,12 @@ namespace bnhtrade.Core.Logic.Import
}
// import into database
- var dbImport = new Data.Database.Import.AmazonSettlementInsert();
+ var dbInsert = new Data.Database.Import.AmazonSettlementInsert();
for (int i = 0; i < spapiReportIdList.Count(); i++)
{
UI.Console.WriteLine("Importing settlement report " + (i + 1) + " of " + spapiReportIdList.Count() + " (ReportID:" + spapiReportIdList[i] + ").");
- var filePath = amazonReport.GetFile(spapiReportIdList[i]);
- bool ack = dbImport.ByFlatFile(filePath, spapiReportIdList[i]);
+ var filePath = amazonReport.GetReportFile(spapiReportIdList[i]);
+ bool ack = dbInsert.ByFlatFile(filePath, spapiReportIdList[i]);
log.LogInformation("Settlment Report imported (ReportID:" + spapiReportIdList[i] + ").");
}