Commit b1a7f188 by lizefeng

FIX

parent e71af189
......@@ -268,16 +268,16 @@ namespace AutoTurnOver.Services
dc_base_amazon_fee transferFee = new dc_base_amazon_fee
{
account = item.Account,
date = feeItem.FundTransferDate==null?new DateTime(1991,1,1) : feeItem.FundTransferDate.Value,
date = feeItem.FundTransferDate == null ? new DateTime(1991, 1, 1) : feeItem.FundTransferDate.Value,
end_date = (feeItem.FinancialEventGroupEnd == null ? new DateTime(1991, 1, 1) : feeItem.FinancialEventGroupEnd.Value).AddHours(8),
start_date = (feeItem.FinancialEventGroupStart == null ? new DateTime(1991, 1, 1) : feeItem.FinancialEventGroupStart.Value).AddHours(8),
AmazonOrderId = feeItem.FinancialEventGroupId,
SellerOrderId = feeItem.TraceId,
_ts = DateTime.Now,
settlement_id="-",
settlement_id = "-",
description = $"To account ending in: {feeItem.AccountTail}",
type = "Transfer", // 提现
total = (decimal)feeItem.BeginningBalance.CurrencyAmount - (decimal)feeItem.OriginalTotal.CurrencyAmount ,
total = (decimal)feeItem.BeginningBalance.CurrencyAmount - (decimal)feeItem.OriginalTotal.CurrencyAmount,
currency_code = feeItem.OriginalTotal.CurrencyCode
};
transferFee.settlement_date_str = $"{transferFee.start_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}~{transferFee.end_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}";
......@@ -322,7 +322,7 @@ namespace AutoTurnOver.Services
/// <summary>
/// 拉取报表
/// </summary>
public void SynchroReportIds(ReportTypes reportTypeEnum,int version =8)
public void SynchroReportIds(ReportTypes reportTypeEnum, int version = 8)
{
// 拉取亚马逊账号
var amazonAccounts = ApiServices.GetAmazonAccountList();
......@@ -521,7 +521,7 @@ namespace AutoTurnOver.Services
/// <summary>
/// 解析报告
/// </summary>
public void AnaReport(int status = 0,string data_id = "")
public void AnaReport(int status = 0, string data_id = "")
{
var reportTypeEnum = ReportTypes.GET_V2_SETTLEMENT_REPORT_DATA_XML;
//var reportTypeEnum = ReportTypes.GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE_V2;
......@@ -544,10 +544,11 @@ namespace AutoTurnOver.Services
}
try
{
var pamsAccount = ApiServices.GetAmazonAccountList().FirstOrDefault(s => s.Id == ana_task.pams_account_id);
string jsonText = ana_task.content;
if (string.IsNullOrWhiteSpace(jsonText))
{
var pamsAccount = ApiServices.GetAmazonAccountList().FirstOrDefault(s => s.Id == ana_task.pams_account_id);
var filePath = DownloadReport(pamsAccount, ana_task.report_id);
StringBuilder response_str = new StringBuilder() { };
using (StreamReader sr = new StreamReader(filePath))
......@@ -569,7 +570,7 @@ namespace AutoTurnOver.Services
List<dc_base_amazon_fee> feeDatas = new List<dc_base_amazon_fee> { };
foreach (var orderItem in settlementData.AmazonEnvelope.Message.SettlementReport.Order)
{
if(orderItem.AmazonOrderID== "202-9714395-5172367")
if (orderItem.AmazonOrderID == "202-9714395-5172367")
{
}
......@@ -628,17 +629,17 @@ namespace AutoTurnOver.Services
{
foreach (var otherTransactionItemFee in otherTransactionItem.Fees.Fee)
{
var otherTransactionItemData = ApiOtherTransactionDataMapDbData(marketplaceName,pamsAccount, settlementData.AmazonEnvelope.Message.SettlementReport.SettlementData,
var otherTransactionItemData = ApiOtherTransactionDataMapDbData(marketplaceName, pamsAccount, settlementData.AmazonEnvelope.Message.SettlementReport.SettlementData,
otherTransactionItem.TransactionID, otherTransactionItem.PostedDate,
otherTransactionItemFee.Amount.Text ?? 0, otherTransactionItemFee.Type, otherTransactionItemFee.Amount.Currency,"other", otherTransactionItem.AmazonOrderID);
otherTransactionItemFee.Amount.Text ?? 0, otherTransactionItemFee.Type, otherTransactionItemFee.Amount.Currency, "other", otherTransactionItem.AmazonOrderID);
feeDatas.Add(otherTransactionItemData);
}
}
else
{
var otherTransactionItemData = ApiOtherTransactionDataMapDbData(marketplaceName,pamsAccount, settlementData.AmazonEnvelope.Message.SettlementReport.SettlementData,
var otherTransactionItemData = ApiOtherTransactionDataMapDbData(marketplaceName, pamsAccount, settlementData.AmazonEnvelope.Message.SettlementReport.SettlementData,
otherTransactionItem.TransactionID, otherTransactionItem.PostedDate,
otherTransactionItem.Amount.Text ?? 0, otherTransactionItem.TransactionType, otherTransactionItem.Amount.Currency, "other" ,otherTransactionItem.AmazonOrderID);
otherTransactionItem.Amount.Text ?? 0, otherTransactionItem.TransactionType, otherTransactionItem.Amount.Currency, "other", otherTransactionItem.AmazonOrderID);
feeDatas.Add(otherTransactionItemData);
}
......@@ -690,7 +691,7 @@ namespace AutoTurnOver.Services
feeItem.MarketplaceNameSys = marketplaceNameSys;
feeItem.start_date = settlementDbData.start_date;
feeItem.end_date = settlementDbData.end_date;
feeItem.settlement_date_str =$"{feeItem.start_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}~{feeItem.end_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}";
feeItem.settlement_date_str = $"{feeItem.start_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}~{feeItem.end_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}";
feeItem._ts = DateTime.Now;
feeItem.id = MyMySqlConnection._connection.QueryFirstOrDefault<int?>("select id from dc_base_amazon_fee where data_id=@data_id", new { data_id = feeItem.data_id }) ?? 0;
if (feeItem.id > 0)
......@@ -755,11 +756,12 @@ namespace AutoTurnOver.Services
string jsonText = response_str.ToString();
ana_task.content = jsonText;
var table = CsvFileHelper.ReadFromCSV(filePath, true,jsonText.Contains("amazon-order-id") ?'\t':',');
var table = CsvFileHelper.ReadFromCSV(filePath, true, jsonText.Contains("amazon-order-id") ? '\t' : ',');
foreach (DataRow row in table.Rows)
{
int comIndex = 0;
dc_base_amazon_fulfilled_shipments fulfilledShipments = new dc_base_amazon_fulfilled_shipments {
dc_base_amazon_fulfilled_shipments fulfilledShipments = new dc_base_amazon_fulfilled_shipments
{
amazon_order_id = row.DataRowToString(comIndex++),
merchant_order_id = row.DataRowToString(comIndex++),
shipment_id = row.DataRowToString(comIndex++),
......@@ -811,7 +813,7 @@ namespace AutoTurnOver.Services
};
fulfilledShipments._ts = DateTime.Now;
fulfilledShipments.data_id = $"{fulfilledShipments.amazon_order_id}-{fulfilledShipments.amazon_order_item_id}-{fulfilledShipments.sku}-{fulfilledShipments.merchant_order_item_id}-{fulfilledShipments.shipment_id}-{fulfilledShipments.shipment_item_id}-end";
fulfilledShipments.id = MyMySqlConnection._connection.QueryFirstOrDefault<int?>(" select id from dc_base_amazon_fulfilled_shipments where data_id=@data_id ",new { data_id = fulfilledShipments.data_id })??0;
fulfilledShipments.id = MyMySqlConnection._connection.QueryFirstOrDefault<int?>(" select id from dc_base_amazon_fulfilled_shipments where data_id=@data_id ", new { data_id = fulfilledShipments.data_id }) ?? 0;
if (fulfilledShipments.id > 0)
{
MyMySqlConnection._connection.Update(fulfilledShipments);
......@@ -846,12 +848,12 @@ namespace AutoTurnOver.Services
{
switch (currency.ToUpper())
{
case "USD":return "Amazon.com";
case "USD": return "Amazon.com";
case "SEK": return "Amazon.se";
case "GBP": return "Amazon.co.uk";
case "MXN": return "Amazon.com.mx";
case "CAD": return "Amazon.ca";
default:return "";
default: return "";
}
}
......@@ -893,7 +895,7 @@ namespace AutoTurnOver.Services
{
feeShipmentEvent.fba_fees = item.ItemFees.Fee.Where(s => fbaFeeTypeList.Any(f1 => f1.Equals(s.Type, StringComparison.InvariantCultureIgnoreCase))).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.selling_fees = item.ItemFees.Fee.Where(s => sellingFeesList.Any(f1 => s.Type.Equals(f1, StringComparison.InvariantCultureIgnoreCase))).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.fee_types =string.Join(",", item.ItemFees.Fee.Select(s=>s.Type)) ;
feeShipmentEvent.fee_types = string.Join(",", item.ItemFees.Fee.Select(s => s.Type));
}
......@@ -904,10 +906,14 @@ namespace AutoTurnOver.Services
feeShipmentEvent.postage_credits = item.ItemPrice.Component.Where(s => s.Type.Equals("Shipping", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.shipping_credits_tax = item.ItemPrice.Component.Where(s => s.Type.Equals("ShippingTax", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.product_sales_tax = item.ItemPrice.Component.Where(s => s.Type.Equals("Tax", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
if (!"Amazon.com".Equals(feeShipmentEvent.MarketplaceName))
{
if (feeShipmentEvent.shipping_credits_tax == 0 && feeShipmentEvent.postage_credits != 0)
{
feeShipmentEvent.shipping_credits_tax = Math.Round(feeShipmentEvent.postage_credits * 0.2M, 2, MidpointRounding.ToEven);
}
}
feeShipmentEvent.gift_wrap_credits = item.ItemPrice.Component.Where(s => s.Type.Equals("GiftWrap", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.gift_wrap_credits_tax = item.ItemPrice.Component.Where(s => s.Type.Equals("GiftWrapTax", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.product_sales = item.ItemPrice.Component.Where(s => s.Type.Equals("Principal", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
......@@ -929,7 +935,7 @@ namespace AutoTurnOver.Services
feeShipmentEvent.other = 0;
if (item.Promotion != null && item.Promotion.Any(s=>s.Amount.Text != 0))
if (item.Promotion != null && item.Promotion.Any(s => s.Amount.Text != 0))
{
feeShipmentEvent.promotional_rebates = item.Promotion.Sum(s => s.Amount.Text ?? 0);
// 美国站统一没有这个
......@@ -1004,10 +1010,14 @@ namespace AutoTurnOver.Services
feeShipmentEvent.postage_credits = itemFeeAdjustment.ItemPriceAdjustments.Component.Where(s => s.Type.Equals("Shipping", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.shipping_credits_tax = itemFeeAdjustment.ItemPriceAdjustments.Component.Where(s => s.Type.Equals("ShippingTax", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.product_sales_tax = itemFeeAdjustment.ItemPriceAdjustments.Component.Where(s => s.Type.Equals("Tax", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
if (!"Amazon.com".Equals(feeShipmentEvent.MarketplaceName))
{
if (feeShipmentEvent.shipping_credits_tax == 0 && feeShipmentEvent.postage_credits != 0)
{
feeShipmentEvent.shipping_credits_tax = Math.Round(feeShipmentEvent.postage_credits * 0.2M, 2, MidpointRounding.ToEven);
}
}
feeShipmentEvent.gift_wrap_credits = itemFeeAdjustment.ItemPriceAdjustments.Component.Where(s => s.Type.Equals("GiftWrap", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.gift_wrap_credits_tax = itemFeeAdjustment.ItemPriceAdjustments.Component.Where(s => s.Type.Equals("GiftWrapTax", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
feeShipmentEvent.product_sales = itemFeeAdjustment.ItemPriceAdjustments.Component.Where(s => s.Type.Equals("Principal", StringComparison.InvariantCultureIgnoreCase)).Sum(s => s.Amount.Text ?? 0);
......@@ -1029,9 +1039,9 @@ namespace AutoTurnOver.Services
feeShipmentEvent.other = 0;
if (itemFeeAdjustment.PromotionAdjustment != null && itemFeeAdjustment.PromotionAdjustment.Any(s=>s.Amount.Text != 0))
if (itemFeeAdjustment.PromotionAdjustment != null && itemFeeAdjustment.PromotionAdjustment.Any(s => s.Amount.Text != 0))
{
feeShipmentEvent.promotional_rebates = itemFeeAdjustment.PromotionAdjustment.Sum(s=>s.Amount.Text??0);
feeShipmentEvent.promotional_rebates = itemFeeAdjustment.PromotionAdjustment.Sum(s => s.Amount.Text ?? 0);
// 美国站统一没有这个
if (!"Amazon.com".Equals(feeShipmentEvent.MarketplaceName))
{
......@@ -1064,8 +1074,8 @@ namespace AutoTurnOver.Services
}
public dc_base_amazon_fee ApiOtherTransactionDataMapDbData(string marketplaceName,AmazonAccountDto account, ApiAmazonSettlementDto.AmazonEnvelopeDto.MessageDto.SettlementReportDto.SettlementDataDto xmlSettlementData,
string transactionID, DateTime? postedDate, decimal amount, string type, string currency_code,string source = "other",string amazonOrderID = null)
public dc_base_amazon_fee ApiOtherTransactionDataMapDbData(string marketplaceName, AmazonAccountDto account, ApiAmazonSettlementDto.AmazonEnvelopeDto.MessageDto.SettlementReportDto.SettlementDataDto xmlSettlementData,
string transactionID, DateTime? postedDate, decimal amount, string type, string currency_code, string source = "other", string amazonOrderID = null)
{
var fbaTypeDic = new Dictionary<string, string> { };
fbaTypeDic.Add("Storage Fee", "FBA Inventory Fee");
......@@ -1387,14 +1397,16 @@ namespace AutoTurnOver.Services
foreach (var item in datas)
{
//查询同账号下,相同时间节点的费用
var feeSingleData = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee>(" select * from dc_base_amazon_fee where settlement_date_str=@settlement_date_str and account=@account and settlement_id!='-' limit 1 ", new {
settlement_date_str= item.settlement_date_str,
var feeSingleData = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee>(" select * from dc_base_amazon_fee where settlement_date_str=@settlement_date_str and account=@account and settlement_id!='-' limit 1 ", new
{
settlement_date_str = item.settlement_date_str,
account = item.account
});
if (feeSingleData != null)
{
item.settlement_id = feeSingleData.settlement_id;
MyMySqlConnection._connection.Execute(" update dc_base_amazon_fee set settlement_id=@settlement_id,_ts=now() where id=@id ",new {
MyMySqlConnection._connection.Execute(" update dc_base_amazon_fee set settlement_id=@settlement_id,_ts=now() where id=@id ", new
{
settlement_id = item.settlement_id,
id = item.id
});
......@@ -1410,17 +1422,19 @@ namespace AutoTurnOver.Services
{
var allSites = new List<string> { "Amazon.it", "Amazon.fr", "Amazon.nl", "Amazon.es", "Amazon.de", "Amazon.com.be" };
// 查询没有找到站点的结算表
var datas = MyMySqlConnection._connection.Query<dc_base_amazon_settlement>(" select * from dc_base_amazon_settlement where marketplace_name_sys='' and currency='EUR' and _ts<@nowDate order by id desc limit 100 ", new {
var datas = MyMySqlConnection._connection.Query<dc_base_amazon_settlement>(" select * from dc_base_amazon_settlement where marketplace_name_sys='' and currency='EUR' and _ts<@nowDate order by id desc limit 100 ", new
{
nowDate = nowDate
}).ToList();
foreach (var item in datas)
{
// 查询这个计算表差不多时间
var settlements = MyMySqlConnection._connection.Query<dc_base_amazon_settlement>(" select * from dc_base_amazon_settlement where start_date<=@etime and end_date>=@btime and account=@account ", new {
var settlements = MyMySqlConnection._connection.Query<dc_base_amazon_settlement>(" select * from dc_base_amazon_settlement where start_date<=@etime and end_date>=@btime and account=@account ", new
{
btime = item.start_date.Value.AddDays(-1),
etime = item.start_date.Value.AddDays(1),
account = item.account
}).ToList().Where(s=>!string.IsNullOrWhiteSpace( s.marketplace_name_sys)).ToList();
}).ToList().Where(s => !string.IsNullOrWhiteSpace(s.marketplace_name_sys)).ToList();
// 把已经有站点的账单挑出去,在剩余站点中随便找一个
var useDatas = allSites.Where(s => !settlements.Any(s1 => s1.marketplace_name_sys == s)).ToList();
if (useDatas.Count >= 1)
......
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