Commit 3c51e322 by lizefeng

新增亚马逊预留金额的抓取

parent 8b1d183a
...@@ -33,11 +33,18 @@ namespace AutoTurnOver.Services ...@@ -33,11 +33,18 @@ namespace AutoTurnOver.Services
public class AmazonDataSynchroService public class AmazonDataSynchroService
{ {
public void SynchroFinancialEventGroups() public void SynchroFinancialEventGroups(string account = null, string siteEn = null)
{ {
// 拉取亚马逊账号 // 拉取亚马逊账号
var amazonAccounts = ApiServices.GetAmazonAccountList(); var amazonAccounts = ApiServices.GetAmazonAccountList();
//amazonAccounts = amazonAccounts.Where(s => s.Account == "ouzyi" && s.SiteEn=="IT").ToList(); if (!string.IsNullOrWhiteSpace(account))
{
amazonAccounts = amazonAccounts.Where(s => s.Account == account).ToList();
}
if (!string.IsNullOrWhiteSpace(siteEn))
{
amazonAccounts = amazonAccounts.Where(s => s.SiteEn == siteEn).ToList();
}
var maps = ApiUtility.GetProjectMap(new NewQueryFilterDTO { modelId = "309227134293902597", CurrentPage = 1, PageSize = 10000, ListFilter = new List<FieldFilterDTO> { new FieldFilterDTO { Field = "type", Operator = "in", Value = "10" } } }); var maps = ApiUtility.GetProjectMap(new NewQueryFilterDTO { modelId = "309227134293902597", CurrentPage = 1, PageSize = 10000, ListFilter = new List<FieldFilterDTO> { new FieldFilterDTO { Field = "type", Operator = "in", Value = "10" } } });
foreach (var item in amazonAccounts) foreach (var item in amazonAccounts)
{ {
...@@ -46,7 +53,7 @@ namespace AutoTurnOver.Services ...@@ -46,7 +53,7 @@ namespace AutoTurnOver.Services
if (item.AmznSpDevAccountObj != null && item.AmznSpTokenObj != null) if (item.AmznSpDevAccountObj != null && item.AmznSpTokenObj != null)
{ {
var task_name = $"SynchroAmazonFinancialEventGroups_v18_{item.Id}"; var task_name = $"SynchroAmazonFinancialEventGroups_v19_{item.Id}";
// 查询最后一次成功抓取的记录 // 查询最后一次成功抓取的记录
var last_task_synchro_log = MyMySqlConnection._connection.QuerySingleOrDefault<task_synchro_log>(" select * from task_synchro_log where task_name=@task_name and status=1 order by end_time desc limit 1 ", new { task_name = task_name }); var last_task_synchro_log = MyMySqlConnection._connection.QuerySingleOrDefault<task_synchro_log>(" select * from task_synchro_log where task_name=@task_name and status=1 order by end_time desc limit 1 ", new { task_name = task_name });
...@@ -78,7 +85,7 @@ namespace AutoTurnOver.Services ...@@ -78,7 +85,7 @@ namespace AutoTurnOver.Services
foreach (var feeItem in fees.Where(s => s.FundTransferStatus == "Succeeded" || (s.ProcessingStatus == "Open" && s.FinancialEventGroupEnd == null))) foreach (var feeItem in fees.Where(s => s.FundTransferStatus == "Succeeded" || (s.ProcessingStatus == "Open" && s.FinancialEventGroupEnd == null)))
{ {
List<dc_base_amazon_fee> feeDbs = new List<dc_base_amazon_fee>();
dc_base_amazon_fee transferFee = new dc_base_amazon_fee dc_base_amazon_fee transferFee = new dc_base_amazon_fee
{ {
account = item.Account, account = item.Account,
...@@ -110,25 +117,59 @@ namespace AutoTurnOver.Services ...@@ -110,25 +117,59 @@ namespace AutoTurnOver.Services
transferFee.settlement_date_str = $"{transferFee.start_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}"; transferFee.settlement_date_str = $"{transferFee.start_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}";
transferFee.other = transferFee.total; transferFee.other = transferFee.total;
transferFee.data_id = $"{transferFee.type}_{transferFee.account}-{transferFee.settlement_date_str}"; transferFee.data_id = $"{transferFee.type}_{transferFee.account}-{transferFee.settlement_date_str}";
var oldData = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee>(" select * from dc_base_amazon_fee where data_id=@data_id ", new { data_id = transferFee.data_id }); feeDbs.Add(transferFee);
if (oldData != null)
// 当前账单未完结, 读取预留金额
// 提取预留金额
// 预留金额
decimal reserveAmount = 0M;
var events = GetFinancialEvents(item, feeItem.FinancialEventGroupId);
var reserveCreditDatas = events.Where(s => s.AdjustmentEventList != null && s.AdjustmentEventList.Any(s => s.AdjustmentType == "ReserveCredit")).ToList();
if (reserveCreditDatas.Count >= 1)
{ {
transferFee.id = oldData.id; var reserveAmountData = reserveCreditDatas.FirstOrDefault(s => s.AdjustmentEventList.Any(s1 => s1.AdjustmentType == "ReserveCredit")).AdjustmentEventList.FirstOrDefault(s => s.AdjustmentType == "ReserveCredit");
transferFee.settlement_id = oldData.settlement_id; if (reserveAmountData != null && reserveAmountData.AdjustmentAmount != null)
transferFee.MarketplaceName = oldData.MarketplaceName; {
transferFee.MarketplaceNameSys = oldData.MarketplaceNameSys; reserveAmount = (decimal)reserveAmountData.AdjustmentAmount.CurrencyAmount;
}
} }
SetProject(maps.data.list, transferFee);
if (transferFee.id == 0) var reserveAmountDeeData = transferFee.ToJson().ToObj<dc_base_amazon_fee>();
reserveAmountDeeData.total = reserveAmount;
reserveAmountDeeData.type = "Current Reserve Amount From Financial API";
reserveAmountDeeData.type_cn = "预留金额 预估 ( 财务 API )";
reserveAmountDeeData.data_id = $"{reserveAmountDeeData.type}_{reserveAmountDeeData.account}-{reserveAmountDeeData.settlement_date_str}";
if (feeItem.FinancialEventGroupEnd != null)
{ {
MyMySqlConnection._connection.Insert(transferFee); reserveAmountDeeData.type_cn = "预留金额 ( 财务 API )";
} }
else feeDbs.Add(reserveAmountDeeData);
// 保存到数据库
foreach (var itemFee in feeDbs)
{ {
MyMySqlConnection._connection.Update(transferFee); var oldData = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee>(" select * from dc_base_amazon_fee where data_id=@data_id ", new { data_id = itemFee.data_id });
if (oldData != null)
{
itemFee.id = oldData.id;
itemFee.settlement_id = oldData.settlement_id;
itemFee.MarketplaceName = oldData.MarketplaceName;
itemFee.MarketplaceNameSys = oldData.MarketplaceNameSys;
}
SetProject(maps.data.list, itemFee);
if (itemFee.id == 0)
{
MyMySqlConnection._connection.Insert(itemFee);
}
else
{
MyMySqlConnection._connection.Update(itemFee);
}
} }
} }
...@@ -282,9 +323,9 @@ namespace AutoTurnOver.Services ...@@ -282,9 +323,9 @@ namespace AutoTurnOver.Services
} }
} }
public void SynchroReportIdByCreate(ReportTypes reportTypeEnum, int version = 8, string account = "", string site = "",DateTime? btime =null ,DateTime? etime = null) public void SynchroReportIdByCreate(ReportTypes reportTypeEnum, int version = 8, string account = "", string site = "", DateTime? btime = null, DateTime? etime = null)
{ {
if(btime!=null &&etime!=null) if (btime != null && etime != null)
{ {
if (etime.Value < btime.Value) if (etime.Value < btime.Value)
{ {
...@@ -346,7 +387,7 @@ namespace AutoTurnOver.Services ...@@ -346,7 +387,7 @@ namespace AutoTurnOver.Services
} }
var reportId = CreateReport(item, new_task_synchro_log.start_time, new_task_synchro_log.end_time, reportTypeEnum); var reportId = CreateReport(item, new_task_synchro_log.start_time, new_task_synchro_log.end_time, reportTypeEnum);
var reportsDb = new dc_base_amazon_fee_report_log var reportsDb = new dc_base_amazon_fee_report_log
...@@ -452,10 +493,6 @@ namespace AutoTurnOver.Services ...@@ -452,10 +493,6 @@ namespace AutoTurnOver.Services
List<dc_base_amazon_fee> feeDatas = new List<dc_base_amazon_fee> { }; List<dc_base_amazon_fee> feeDatas = new List<dc_base_amazon_fee> { };
foreach (var orderItem in settlementData.AmazonEnvelope.Message.SettlementReport.Order) foreach (var orderItem in settlementData.AmazonEnvelope.Message.SettlementReport.Order)
{ {
if (orderItem.AmazonOrderID == "202-9714395-5172367")
{
}
var orderDbData = ApiOrderDataMapDbData(pamsAccount, settlementData.AmazonEnvelope.Message.SettlementReport.SettlementData, orderItem); var orderDbData = ApiOrderDataMapDbData(pamsAccount, settlementData.AmazonEnvelope.Message.SettlementReport.SettlementData, orderItem);
feeDatas.AddRange(orderDbData); feeDatas.AddRange(orderDbData);
} }
...@@ -846,16 +883,16 @@ namespace AutoTurnOver.Services ...@@ -846,16 +883,16 @@ namespace AutoTurnOver.Services
} }
else else
{ {
var reportData = DownloadReportData(pamsAccount, ana_task.report_id); var reportData = DownloadReportData(pamsAccount, ana_task.report_id);
if (string.IsNullOrWhiteSpace(reportData.ReportDocumentId)) if (string.IsNullOrWhiteSpace(reportData.ReportDocumentId))
{ {
if (reportData.ProcessingStatus == Report.ProcessingStatusEnum.FATAL || reportData.ProcessingStatus == Report.ProcessingStatusEnum.CANCELLED) if (reportData.ProcessingStatus == Report.ProcessingStatusEnum.FATAL || reportData.ProcessingStatus == Report.ProcessingStatusEnum.CANCELLED)
{ {
ana_task.ana_status = -2; ana_task.ana_status = -2;
ana_task.ana_error = reportData.ProcessingStatus.ToString() ; ana_task.ana_error = reportData.ProcessingStatus.ToString();
ana_task.report_par_json = reportData.ToJson() ; ana_task.report_par_json = reportData.ToJson();
MyMySqlConnection._connection.Update(ana_task); MyMySqlConnection._connection.Update(ana_task);
return; return;
} }
...@@ -879,7 +916,7 @@ namespace AutoTurnOver.Services ...@@ -879,7 +916,7 @@ namespace AutoTurnOver.Services
table = CsvFileHelper.ReadFromCSV(reportData.ReportDocumentId, true, '\t'); table = CsvFileHelper.ReadFromCSV(reportData.ReportDocumentId, true, '\t');
} }
foreach (DataRow row in table.Rows) foreach (DataRow row in table.Rows)
{ {
try try
...@@ -930,7 +967,7 @@ namespace AutoTurnOver.Services ...@@ -930,7 +967,7 @@ namespace AutoTurnOver.Services
throw; throw;
} }
} }
...@@ -959,14 +996,14 @@ namespace AutoTurnOver.Services ...@@ -959,14 +996,14 @@ namespace AutoTurnOver.Services
public void AnaFbaStorageFeeReportSubmit(string report_type, string queryName) public void AnaFbaStorageFeeReportSubmit(string report_type, string queryName)
{ {
var datas = MyMySqlConnection._connection.Query<report_log_dto>(" select Id,report_id from dc_base_amazon_fee_report_log where report_type=@report_type and ana_status in (0,-1) ", new { report_type = report_type }).ToList(); var datas = MyMySqlConnection._connection.Query<report_log_dto>(" select Id,report_id from dc_base_amazon_fee_report_log where report_type=@report_type and ana_status in (0,-1) ", new { report_type = report_type }).ToList();
if(datas!=null && datas.Count >= 1) if (datas != null && datas.Count >= 1)
{ {
foreach (var item in datas) foreach (var item in datas)
{ {
RabbitMQHelper.EnqueneMsg(queryName, new t_task_queue { id =$"3_{item.report_id}", create_time = DateTime.Now }); RabbitMQHelper.EnqueneMsg(queryName, new t_task_queue { id = $"3_{item.report_id}", create_time = DateTime.Now });
} }
MyMySqlConnection._connection.Execute("update dc_base_amazon_fee_report_log set ana_status=3 where id in @ids ",new { ids = datas.Select(s=>s.Id).ToList()}); MyMySqlConnection._connection.Execute("update dc_base_amazon_fee_report_log set ana_status=3 where id in @ids ", new { ids = datas.Select(s => s.Id).ToList() });
} }
} }
...@@ -1000,11 +1037,11 @@ namespace AutoTurnOver.Services ...@@ -1000,11 +1037,11 @@ namespace AutoTurnOver.Services
{ {
var pamsAccount = ApiServices.GetAmazonAccountList().FirstOrDefault(s => s.Id == ana_task.pams_account_id); var pamsAccount = ApiServices.GetAmazonAccountList().FirstOrDefault(s => s.Id == ana_task.pams_account_id);
var reportData = DownloadReportData(pamsAccount, ana_task.report_id); var reportData = DownloadReportData(pamsAccount, ana_task.report_id);
if(string.IsNullOrWhiteSpace(reportData.ReportDocumentId)) if (string.IsNullOrWhiteSpace(reportData.ReportDocumentId))
{ {
if(reportData.ProcessingStatus == Report.ProcessingStatusEnum.FATAL|| reportData.ProcessingStatus == Report.ProcessingStatusEnum.CANCELLED) if (reportData.ProcessingStatus == Report.ProcessingStatusEnum.FATAL || reportData.ProcessingStatus == Report.ProcessingStatusEnum.CANCELLED)
{ {
ana_task.ana_status =-2; ana_task.ana_status = -2;
MyMySqlConnection._connection.Update(ana_task); MyMySqlConnection._connection.Update(ana_task);
return; return;
} }
...@@ -1014,7 +1051,7 @@ namespace AutoTurnOver.Services ...@@ -1014,7 +1051,7 @@ namespace AutoTurnOver.Services
MyMySqlConnection._connection.Update(ana_task); MyMySqlConnection._connection.Update(ana_task);
return; return;
} }
} }
StringBuilder response_str = new StringBuilder() { }; StringBuilder response_str = new StringBuilder() { };
using (StreamReader sr = new StreamReader(reportData.ReportDocumentId)) using (StreamReader sr = new StreamReader(reportData.ReportDocumentId))
...@@ -1044,7 +1081,7 @@ namespace AutoTurnOver.Services ...@@ -1044,7 +1081,7 @@ namespace AutoTurnOver.Services
sku = row.DataRowToString("fnsku"), sku = row.DataRowToString("fnsku"),
report_end_date = reportData.DataEndTime ?? new DateTime(1991, 1, 1) report_end_date = reportData.DataEndTime ?? new DateTime(1991, 1, 1)
}; };
storageFee.fee = row.DataRowToNumber("long-time-range-long-term-storage-fee") ?? 0; storageFee.fee = row.DataRowToNumber("long-time-range-long-term-storage-fee") ?? 0;
storageFee._date = reportData.DataStartTime.Value.ToDayHome(); storageFee._date = reportData.DataStartTime.Value.ToDayHome();
//storageFee.site = row.DataRowToString("country_code"); //storageFee.site = row.DataRowToString("country_code");
if ("GB".Equals(storageFee.site, StringComparison.CurrentCultureIgnoreCase)) if ("GB".Equals(storageFee.site, StringComparison.CurrentCultureIgnoreCase))
...@@ -1712,6 +1749,21 @@ namespace AutoTurnOver.Services ...@@ -1712,6 +1749,21 @@ namespace AutoTurnOver.Services
var reports = amazonConnection.Financial.ListFinancialEventGroups(parameters); var reports = amazonConnection.Financial.ListFinancialEventGroups(parameters);
return reports; return reports;
} }
/// <summary>
/// 查询时间组
/// </summary>
/// <param name="account"></param>
/// <param name="groupId"></param>
/// <param name="btime"></param>
/// <param name="etime"></param>
/// <returns></returns>
public List<FinancialEvents> GetFinancialEvents(AmazonAccountDto account, string groupId)
{
AmazonConnection amazonConnection = MapAmazonConnection(account);
var reports = amazonConnection.Financial.ListFinancialEventsByGroupId(groupId);
return reports;
}
/// <summary> /// <summary>
/// 生成报告 /// 生成报告
......
using AutoTurnOver.DB; using AutoTurnOver.Services;
using AutoTurnOver.Services;
using AutoTurnOver.Utility;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
...@@ -51,7 +49,7 @@ namespace ResetOutofstock ...@@ -51,7 +49,7 @@ namespace ResetOutofstock
//report_invest_return_dao.SynchBtmOrderRefund(); //report_invest_return_dao.SynchBtmOrderRefund();
//report_invest_return_dao.CalculationStockScore("962073701"); //report_invest_return_dao.CalculationStockScore("962073701");
//dc_ana_deviation_dao.PushAnaTask(); //dc_ana_deviation_dao.PushAnaTask();
//new AmazonDataSynchroService().SynchroFinancialEventGroups(); //new AmazonDataSynchroService().SynchroFinancialEventGroups("Siqidzi","ES");
//new AmazonDataSynchroService().SetMarketplaceName(DateTime.Now); //new AmazonDataSynchroService().SetMarketplaceName(DateTime.Now);
//new AmazonDataSynchroService().SetSettlementByDate(); //new AmazonDataSynchroService().SetSettlementByDate();
//new AmazonDataSynchroService().SetMarketplaceNameByDate(); //new AmazonDataSynchroService().SetMarketplaceNameByDate();
...@@ -63,7 +61,7 @@ namespace ResetOutofstock ...@@ -63,7 +61,7 @@ namespace ResetOutofstock
//new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL, 13); //new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL, 13);
//new AmazonDataSynchroService().AnaFbaShipmentReport(); //new AmazonDataSynchroService().AnaFbaShipmentReport();
//new AmazonDataSynchroService().AnaFbaStorageFeeReport(status:-1); //new AmazonDataSynchroService().AnaFbaStorageFeeReport(status:-1);
new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport(3); //new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport(3);
//new AmazonDataSynchroService().AnaFbaReimbursementsStorageFeeReport(3); //new AmazonDataSynchroService().AnaFbaReimbursementsStorageFeeReport(3);
//new AmazonDataSynchroService().AnaFbaOverageStorageFeeReport(report_id: "937084019471"); //new AmazonDataSynchroService().AnaFbaOverageStorageFeeReport(report_id: "937084019471");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment