public static void Process(IList <KCStore> stores) { logger.SetRequestId(GetRequestId()); for (int i = 0; i < stores.Count; i++) { var tokenSource = new CancellationTokenSource(); try { ProcessStore(stores[i], tokenSource.Token); PXProcessing <KCStore> .SetInfo(i, KCMessages.BulkUploadSuccess(stores[i].SiteMasterCD)); } catch (Exception exception) { string log = KCMessages.ProcessException(stores[i].SiteMasterCD, exception.Message, exception.StackTrace); PXTrace.WriteError(exception); logger.ClearLoggingIds(); logger.Error(log); PXProcessing <KCStore> .SetError(i, new Exception(log)); } finally { tokenSource.Cancel(true); tokenSource.Dispose(); } } }
public void ExportProducts(KCStore store, List <KeyValuePair <string, InventoryItem> > productsForExport = null) { DateTime today = DateTime.Now; _store = store; KCSiteMaster connection = Graph.StoreConfig.Select().RowCast <KCSiteMaster>().First(x => x.SiteMasterCD.Equals(store.SiteMasterCD)); KCARestClient client = new KCARestClient(connection); ApiHelper = new KCInventoryItemAPIHelper(client); if (productsForExport == null) { productsForExport = GetProductsForExport(); } List <KCBulkProduct> dtos = HandleItems(productsForExport); foreach (var item in dtos) { var id = Graph.ItemByCD.SelectSingle(item.Product.Sku).InventoryID; ARSalesPrice rec = Graph.KCSalesPrice.SelectSingle("B", id); if (rec != null) { item.Product.RetailPrice = rec.SalesPrice; } } bool anyProductToExport = dtos.Count > 0; if (anyProductToExport) { string bulkFile = PrepareItemBulkFile(dtos); string productFilePath = GenerateProductUploadPath(connection); UploadFileToFTP(connection, bulkFile, productFilePath); } logger.ClearLoggingIds(); logger.Information(anyProductToExport ? KCMessages.BulkUploadSuccess(store.SiteMasterCD) : KCMessages.NoProductsToExport); }