public void ImportAddShopifyVariantsToProduct(ShopifyAddVariantImportContext context) { if (!TestIsShopifyPutEnabled()) { return; } Action action = () => { RefreshInventory(); var state = _stateRepository.RetrieveSystemStateNoTracking(); if (state.InventoryRefreshState != StateCode.Ok) { _executionLogService.Log( "Inventory Refresh is broken; aborting ImportAddShopifyVariantsToProduct"); return; } _syncManager.ImportAddShopifyVariantsToProduct(context); }; Run(action); }
public void ImportAddShopifyVariantsToProduct(ShopifyAddVariantImportContext context) { var monitor = _monitoringService.ProvisionMonitor(BackgroundJobType.ImportAddShopifyVariantsToProduct); var hangfireJobId = BackgroundJob.Enqueue <JobRunner>( x => x.ImportAddShopifyVariantsToProduct(_tenantContext.InstanceId, context, monitor.Id)); _monitoringService.AssignHangfireJob(monitor.Id, hangfireJobId); }
public ActionResult RunImportIntoExistingProduct(long shopifyProductId, List <string> acumaticaItemIds) { var context = new ShopifyAddVariantImportContext(); context.ShopifyProductId = shopifyProductId; context.AcumaticaItemIds = acumaticaItemIds; _oneTimeJobService.ImportAddShopifyVariantsToProduct(context); return(JsonNetResult.Success()); }
private void AutomatchExistingSkus(ShopifyAddVariantImportContext context) { foreach (var itemId in context.AcumaticaItemIds.ToList()) { var existingVariant = _syncInventoryRepository.RetrieveVariantForAutomatch(context.ShopifyProductId, itemId.StandardizedSku()); if (existingVariant != null) { _logService.Log($"Auto-matched {itemId.LogDescriptorItemId()} to {existingVariant.LogDescriptor()}"); CreateSyncRecord(itemId.StandardizedSku(), existingVariant); //context.AcumaticaItemIds.Remove(itemId); } } }
public void RunAddToProduct(ShopifyAddVariantImportContext context) { if (MonsterConfig.Settings.DisableShopifyPut) { _logService.Log(LogBuilder.ShopifyPutDisabled()); return; } // Attempt to auto-match Item Ids SKU's that exists // AutomatchExistingSkus(context); // Creates payload for Shopify API only including valid Variants not in Shopify // var createVariantList = CleanAndBuildVariantPayload(context.AcumaticaItemIds); var shopifyProductRecord = _syncInventoryRepository.RetrieveProduct(context.ShopifyProductId); // Add Variants thru Shopify API // foreach (var createVariant in createVariantList) { _logService.Log(LogBuilder.CreatingShopifyVariant(createVariant)); // Invoke Shopify API and create new Variant // var json = new { variant = createVariant }.SerializeToJson(); var resultJson = _productApi.AddVariant(context.ShopifyProductId, json); var result = resultJson.DeserializeFromJson <VariantParent>(); // Create Variant Record and Sync // var variantRecord = _shopifyInventoryGet.CreateNewVariantRecord(shopifyProductRecord.MonsterId, result.variant); CreateSyncRecord(createVariant.sku.StandardizedSku(), variantRecord); } // Need to refresh local cache of Product, so Inventory Levels records reflect current state // _shopifyInventoryGet.Run(context.ShopifyProductId); foreach (var stockItemId in context.AcumaticaItemIds) { // Update the Inventory data // RunInventoryUpdate(stockItemId); } }
public void ImportAddShopifyVariantsToProduct( Guid instanceId, ShopifyAddVariantImportContext context, long jobMonitorId) { ExecuteJob(instanceId, () => _processDirector.ImportAddShopifyVariantsToProduct(context), jobMonitorId); }
public void ImportAddShopifyVariantsToProduct(ShopifyAddVariantImportContext context) { _shopifyProductVariantPut.RunAddToProduct(context); }