mirror of
https://github.com/stokebob/bnhtrade.git
synced 2026-05-18 19:48:23 +00:00
29f9fae508
* complete read invoices from db * wip * wip * wip * wip * wip * wip * wip * wip * updated nuget package spapi * WIP * wip, now test * wip, jut need to fix tax inclusive line amounts not supported * wip * wip, before I f everything up * no, it complies now, this is the one before I f everything up * wip * wip * wip, logic ready for testing * wip it builds!!!! * wip tested, working, need to complete the gui section * wip * wip * wip - created export invoice data delete, time for testing * wip testing phase * wip - delete function fully tested and working * wip on to sorting out the issue with settlement invoices not tallying * wip * wip * wip * wip * wip before I complete change the ReadInvoiceLineItem sections * that appears to have worked, on with the main quest * no it's doesn't work, saving before i remove the confusing cache system (just use a dictionary!!) * wipping picadilli * wip * wip * implemented uow on inovice export, now for testing * wip * wip all tested do invoice currency convertion fearure * wip * pretty much done so long as xero accepts the exported invoices * Complete!
451 lines
17 KiB
C#
451 lines
17 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using FikaAmazonAPI;
|
|
using FikaAmazonAPI.AmazonSpApiSDK.Models.Feeds;
|
|
using FikaAmazonAPI.ConstructFeed;
|
|
using FikaAmazonAPI.ConstructFeed.Messages;
|
|
using FikaAmazonAPI.Utils;
|
|
using static FikaAmazonAPI.ConstructFeed.BaseXML;
|
|
using static FikaAmazonAPI.Utils.Constants;
|
|
|
|
|
|
namespace bnhtrade.Core.Data.Amazon.Feeds
|
|
{
|
|
public class SampleFeeds
|
|
{
|
|
AmazonConnection amazonConnection;
|
|
public SampleFeeds(AmazonConnection amazonConnection)
|
|
{
|
|
this.amazonConnection = amazonConnection;
|
|
}
|
|
|
|
public void CallFlatfile()
|
|
{
|
|
string text = System.IO.File.ReadAllText(@"C:\Users\tareq\Downloads\Beispiel_Upload.txt");
|
|
|
|
var feedresultTXT = amazonConnection.Feed.SubmitFeed(text
|
|
, FeedType.POST_FLAT_FILE_INVLOADER_DATA
|
|
, new List<string>() { MarketPlace.UnitedArabEmirates.ID }
|
|
, null
|
|
, ContentType.TXT);
|
|
|
|
|
|
string pathURL = string.Empty;
|
|
while (pathURL == string.Empty)
|
|
{
|
|
Thread.Sleep(1000 * 30);
|
|
var feedOutput = amazonConnection.Feed.GetFeed(feedresultTXT);
|
|
if (feedOutput.ProcessingStatus == FikaAmazonAPI.AmazonSpApiSDK.Models.Feeds.Feed.ProcessingStatusEnum.DONE)
|
|
{
|
|
var outPut = amazonConnection.Feed.GetFeedDocument(feedOutput.ResultFeedDocumentId);
|
|
|
|
pathURL = outPut.Url;
|
|
}
|
|
}
|
|
}
|
|
public void GetFeeds()
|
|
{
|
|
|
|
var data = amazonConnection.Feed.GetFeeds(new FikaAmazonAPI.Parameter.Feed.ParameterGetFeed()
|
|
{
|
|
processingStatuses = ProcessingStatuses.DONE,
|
|
pageSize = 100,
|
|
feedTypes = new List<FeedType> { FeedType.POST_PRODUCT_PRICING_DATA },
|
|
createdSince = DateTime.UtcNow.AddDays(-6),
|
|
createdUntil = DateTime.UtcNow.AddDays(-1),
|
|
marketplaceIds = new List<string> { MarketPlace.UnitedArabEmirates.ID }
|
|
});
|
|
}
|
|
|
|
|
|
public void CreateFeedDocument()
|
|
{
|
|
|
|
var data = amazonConnection.Feed.CreateFeedDocument(ContentType.XML);
|
|
}
|
|
|
|
|
|
|
|
public void GetFeedDocument()
|
|
{
|
|
|
|
var data2 = amazonConnection.Feed.GetFeedDocument("amzn1.tortuga.3.92d8fd38-6ccf-49be-979f-6dc27375ea3e.T2DF7HINJ0NRA2");
|
|
}
|
|
|
|
public void GetFeed()
|
|
{
|
|
|
|
var data2 = amazonConnection.Feed.GetFeed("194146018872");
|
|
}
|
|
|
|
public void CancelFeed()
|
|
{
|
|
|
|
var data2 = amazonConnection.Feed.CancelFeed("194146018872");
|
|
}
|
|
|
|
public void SubmitFeedInventory()
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService("A3J37AJU4O9RHK", "1.02");
|
|
var list = new List<InventoryMessage>();
|
|
list.Add(new InventoryMessage()
|
|
{
|
|
SKU = "API.853038006021.20789.1001",
|
|
Quantity = 1
|
|
});
|
|
createDocument.AddInventoryMessage(list);
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_INVENTORY_AVAILABILITY_DATA);
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
/// <summary>
|
|
/// UnderTest
|
|
/// </summary>
|
|
public void SubmitFeedAddProductMessage(string ASIN, string SKU)
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService(amazonConnection.GetCurrentSellerID, "1.02");
|
|
|
|
var list = new List<ProductMessage>();
|
|
list.Add(new ProductMessage()
|
|
{
|
|
SKU = SKU,
|
|
|
|
StandardProductID = new FikaAmazonAPI.ConstructFeed.Messages.StandardProductID()
|
|
{
|
|
Type = "ASIN",
|
|
Value = ASIN
|
|
}
|
|
});
|
|
createDocument.AddProductMessage(list, OperationType.Update);
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_PRODUCT_DATA);
|
|
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
public void SubmitFeedDeleteAddProductMessage()
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService("A3J37AJU4O9RHK", "1.02");
|
|
|
|
var list = new List<ProductMessage>();
|
|
list.Add(new ProductMessage()
|
|
{
|
|
SKU = "8432225129778...."
|
|
});
|
|
createDocument.AddProductMessage(list, OperationType.Delete);
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeedContent(xml, FeedType.POST_PRODUCT_DATA);
|
|
|
|
GetFeedDetails(feedID);
|
|
}
|
|
public void AddOfferMessageMessage()
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService("A3J37AJU4O9RHK", "1.02");
|
|
|
|
var list = new List<OfferMessage>();
|
|
list.Add(new OfferMessage()
|
|
{
|
|
SKU = "4049639414402_b"
|
|
});
|
|
createDocument.AddOfferMessage(list, OperationType.Delete);
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_PRODUCT_DATA);
|
|
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
public void SubmitFeedPRICING(decimal price, string SKU)
|
|
{
|
|
|
|
ConstructFeedService createDocument = new ConstructFeedService(amazonConnection.GetCurrentSellerID, "1.02");
|
|
|
|
var list = new List<PriceMessage>();
|
|
list.Add(new PriceMessage()
|
|
{
|
|
SKU = SKU,
|
|
StandardPrice = new StandardPrice()
|
|
{
|
|
currency = amazonConnection.GetCurrentMarketplace.CurrencyCode.ToString(),
|
|
Value = price
|
|
}
|
|
});
|
|
createDocument.AddPriceMessage(list);
|
|
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_PRODUCT_PRICING_DATA);
|
|
|
|
GetFeedDetails(feedID);
|
|
|
|
}
|
|
|
|
public async void SubmitFeedPricingWithSalePrice(string sku, decimal price, decimal salePrice, DateTime startDate, DateTime endDate)
|
|
{
|
|
var currencyCode = amazonConnection.GetCurrentMarketplace.CurrencyCode.ToString();
|
|
|
|
var createDocument = new ConstructFeedService("A3J37AJU4O9RHK", "1.02");
|
|
|
|
var list = new List<PriceMessage>();
|
|
list.Add(new PriceMessage
|
|
{
|
|
SKU = sku,
|
|
StandardPrice = new StandardPrice
|
|
{
|
|
currency = currencyCode,
|
|
Value = price
|
|
},
|
|
Sale = new Sale
|
|
{
|
|
SalePrice = new StandardPrice
|
|
{
|
|
currency = currencyCode,
|
|
Value = salePrice
|
|
},
|
|
StartDate = startDate.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffK"),
|
|
EndDate = endDate.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffK")
|
|
}
|
|
});
|
|
createDocument.AddPriceMessage(list);
|
|
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedId = await amazonConnection.Feed.SubmitFeedAsync(xml, FeedType.POST_PRODUCT_PRICING_DATA);
|
|
|
|
GetFeedDetails(feedId);
|
|
}
|
|
|
|
|
|
public void SubmitFeedSale(decimal price, string SKU)
|
|
{
|
|
|
|
ConstructFeedService createDocument = new ConstructFeedService("A3J37AJU4O9RHK", "1.02");
|
|
|
|
var list = new List<PriceMessage>();
|
|
list.Add(new PriceMessage()
|
|
{
|
|
SKU = SKU,
|
|
StandardPrice = new StandardPrice()
|
|
{
|
|
currency = amazonConnection.GetCurrentMarketplace.CurrencyCode.ToString(),
|
|
Value = price
|
|
},
|
|
Sale = new Sale()
|
|
{
|
|
StartDate = DateTime.UtcNow.AddDays(+1).ToString("yyyy-MM-dd'T'HH:mm:ss.fffK"),
|
|
EndDate = DateTime.UtcNow.AddDays(+2).ToString("yyyy-MM-dd'T'HH:mm:ss.fffK"),
|
|
SalePrice = new StandardPrice()
|
|
{
|
|
currency = amazonConnection.GetCurrentMarketplace.CurrencyCode.ToString(),
|
|
Value = price
|
|
}
|
|
}
|
|
});
|
|
createDocument.AddPriceMessage(list);
|
|
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_PRODUCT_PRICING_DATA);
|
|
|
|
GetFeedDetails(feedID);
|
|
|
|
}
|
|
|
|
public void FeebPostOrderFullfillment()
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService("{sellerId}", "1.02");
|
|
|
|
var list = new List<OrderFulfillmentMessage>();
|
|
|
|
list.Add(new OrderFulfillmentMessage()
|
|
{
|
|
AmazonOrderID = "{orderId}",
|
|
FulfillmentDate = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ss.fffK"),
|
|
FulfillmentData = new FulfillmentData()
|
|
{
|
|
CarrierName = "Correos Express",
|
|
ShippingMethod = "ePaq",
|
|
ShipperTrackingNumber = "{trackingNumber}"
|
|
}
|
|
});
|
|
createDocument.AddOrderFulfillmentMessage(list);
|
|
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_ORDER_FULFILLMENT_DATA);
|
|
|
|
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
public void SubmitFeedOrderAcknowledgement()
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService("{sellerId}", "1.02");
|
|
var list = new List<OrderAcknowledgementMessage>();
|
|
list.Add(new OrderAcknowledgementMessage()
|
|
{
|
|
AmazonOrderID = "AMZ1234567890123",
|
|
MerchantOrderID = "12345678",
|
|
StatusCode = OrderAcknowledgementStatusCode.Success,
|
|
Item = new List<OrderAcknowledgementItem>() {
|
|
new OrderAcknowledgementItem() {
|
|
AmazonOrderItemCode = "52986411826454",
|
|
MerchantOrderItemID = "1"
|
|
}
|
|
}
|
|
});
|
|
createDocument.AddOrderAcknowledgementMessage(list);
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_ORDER_ACKNOWLEDGEMENT_DATA);
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
public void SubmitFeedOrderAdjustment()
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService("{sellerId}", "1.02");
|
|
var list = new List<OrderAdjustmentMessage>();
|
|
list.Add(new OrderAdjustmentMessage()
|
|
{
|
|
AmazonOrderID = "AMZ1234567890123",
|
|
ActionType = AdjustmentActionType.Refund,
|
|
AdjustedItem = new List<AdjustedItem>() {
|
|
new AdjustedItem() {
|
|
AmazonOrderItemCode = "52986411826454",
|
|
AdjustmentReason = AdjustmentReason.CustomerCancel,
|
|
DirectPaymentAdjustments = new List<DirectPaymentAdjustments>()
|
|
{
|
|
new DirectPaymentAdjustments()
|
|
{
|
|
Component = new List<DirectPaymentAdjustmentsComponent>()
|
|
{
|
|
new DirectPaymentAdjustmentsComponent() {
|
|
DirectPaymentType = "Credit Card Refund",
|
|
Amount = new CurrencyAmount() {
|
|
Value = 10.50M,
|
|
currency = amazonConnection.GetCurrentMarketplace.CurrencyCode
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
createDocument.AddOrderAdjustmentMessage(list);
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_PAYMENT_ADJUSTMENT_DATA);
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
public void CartonContentsRequestFeed()
|
|
{
|
|
ConstructFeedService createDocument2 = new ConstructFeedService("{SellerID}", "1.02");
|
|
|
|
var list22 = new List<CartonContentsRequest>();
|
|
list22.Add(new CartonContentsRequest()
|
|
{
|
|
ShipmentId = "FBA123456",
|
|
Carton = new List<Carton> {
|
|
new Carton() {
|
|
CartonId="1",
|
|
Item=new List<CartonItem>(){
|
|
new CartonItem() {
|
|
QuantityInCase=1,
|
|
QuantityShipped=1,
|
|
SKU="7004"
|
|
}
|
|
}
|
|
},
|
|
new Carton() {
|
|
CartonId="2",
|
|
Item=new List<CartonItem>(){
|
|
new CartonItem() {
|
|
QuantityInCase=12,
|
|
QuantityShipped=12,
|
|
SKU="4051",
|
|
ExpirationDate=DateTime.Now,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
createDocument2.AddCartonContentsRequest(list22);
|
|
|
|
var xml222 = createDocument2.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml222, FeedType.POST_FBA_INBOUND_CARTON_CONTENTS);
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
public void SubmitFeedEasyShipDocument()
|
|
{
|
|
ConstructFeedService createDocument = new ConstructFeedService("{sellerId}", "1.02");
|
|
var list = new List<EasyShipDocumentMessage>();
|
|
list.Add(new EasyShipDocumentMessage()
|
|
{
|
|
AmazonOrderID = "AMZ1234567890123",
|
|
DocumentTypes = new List<EasyShipDocumentType>() {
|
|
EasyShipDocumentType.ShippingLabel
|
|
}
|
|
});
|
|
createDocument.AddEasyShipDocumentMessage(list);
|
|
var xml = createDocument.GetXML();
|
|
|
|
var feedID = amazonConnection.Feed.SubmitFeed(xml, FeedType.POST_EASYSHIP_DOCUMENTS);
|
|
GetFeedDetails(feedID);
|
|
}
|
|
|
|
public void GetFeedDetails(string feedID)
|
|
{
|
|
string ResultFeedDocumentId = string.Empty;
|
|
while (string.IsNullOrEmpty(ResultFeedDocumentId))
|
|
{
|
|
var feedOutput = amazonConnection.Feed.GetFeed(feedID);
|
|
if (feedOutput.ProcessingStatus == Feed.ProcessingStatusEnum.DONE)
|
|
{
|
|
var outPut = amazonConnection.Feed.GetFeedDocument(feedOutput.ResultFeedDocumentId);
|
|
|
|
var reportOutput = outPut.Url;
|
|
|
|
var processingReport = amazonConnection.Feed.GetFeedDocumentProcessingReport(outPut);
|
|
|
|
DisplayProcessingReportMessage(processingReport);
|
|
|
|
break;
|
|
}
|
|
|
|
if (!(feedOutput.ProcessingStatus == Feed.ProcessingStatusEnum.INPROGRESS ||
|
|
feedOutput.ProcessingStatus == Feed.ProcessingStatusEnum.INQUEUE))
|
|
break;
|
|
else Thread.Sleep(10000);
|
|
}
|
|
}
|
|
private void DisplayProcessingReportMessage(ProcessingReportMessage processingReport)
|
|
{
|
|
Console.WriteLine("MessagesProcessed=" + processingReport.ProcessingSummary.MessagesProcessed);
|
|
Console.WriteLine("MessagesSuccessful= " + processingReport.ProcessingSummary.MessagesSuccessful);
|
|
Console.WriteLine("MessagesWithError=" + processingReport.ProcessingSummary.MessagesWithError);
|
|
Console.WriteLine("MessagesWithWarning=" + processingReport.ProcessingSummary.MessagesWithWarning);
|
|
|
|
if (processingReport.Result != null && processingReport.Result.Count > 0)
|
|
{
|
|
foreach (var itm in processingReport.Result)
|
|
{
|
|
Console.WriteLine("ResultDescription=" + (itm.AdditionalInfo?.SKU ?? string.Empty) + " > " + itm.ResultDescription);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|