コード例 #1
0
        private int RunStockItemImport(AcumaticaStockItemImportContext context, ShopifyVariant variant)
        {
            var matchingShopifySkus = _syncRepository.RetrieveNonMissingVariants(variant.StandardizedSku());

            if (matchingShopifySkus.Count > 1)
            {
                _logService.Log($"Stock Item Import: {variant.LogDescriptor()} has duplicates in Shopify - aborting");
                return(StockItemPutResult.NoAction);
            }

            // Attempt to Auto-match
            //
            if (variant.IsMatched())
            {
                _logService.Log($"Stock Item Import: {variant.LogDescriptor()} already matched - aborting");
                return(StockItemPutResult.NoAction);
            }

            var stockItem = _syncRepository.RetrieveStockItem(variant.StandardizedSku());

            if (stockItem != null)
            {
                if (stockItem.IsMatched())
                {
                    var msg = $"Stock Item Import: {variant.LogDescriptor()} SKU already synchronized";
                    _logService.Log(msg);
                    return(StockItemPutResult.NoAction);
                }
                else
                {
                    var msg = $"Stock Item Import: auto-matched {stockItem.LogDescriptor()} to {variant.LogDescriptor()}";
                    _logService.Log(msg);

                    _syncRepository.InsertItemSync(variant, stockItem, context.IsSyncEnabled);
                    return(StockItemPutResult.Synchronized);
                }
            }

            // Abort any further processing
            if (context.SynchronizeOnly == true)
            {
                return(StockItemPutResult.NoAction);
            }


            // With neither duplicates or Auto-matching having succeeded,
            // ... we'll create a new Stock Item in Acumatica
            //
            StockItemPush(context, variant);
            context.VariantsForNextInventoryReceipt.Add(variant);
            return(StockItemPutResult.CreatedStockItem);
        }
コード例 #2
0
        public ShopifyVariantModel MakeVariantModel(ShopifyVariant input)
        {
            var output = new ShopifyVariantModel();

            output.ShopifyVariantId = input.ShopifyVariantId;
            output.Sku               = input.ShopifySku;
            output.VariantTitle      = input.ShopifyTitle;
            output.Price             = (decimal)input.ShopifyPrice;
            output.AvailableQuantity = input.ShopifyInventoryLevels.Sum(x => x.ShopifyAvailableQuantity);
            output.IsMissing         = input.IsMissing;

            output.IsLoadedInAcumatica = input.IsMatched();

            return(output);
        }
コード例 #3
0
        MakeProductStockItemResults(ShopifyVariant variant, MonsterSetting settings)
        {
            var output = new ProductStockItemResultsRow();

            output.ShopifyProductId    = variant.ShopifyProduct.ShopifyProductId;
            output.ShopifyProductTitle = variant.ShopifyProduct.ShopifyTitle;
            output.ShopifyProductUrl
                = _shopifyUrlService.ShopifyProductUrl(variant.ShopifyProduct.ShopifyProductId);
            output.ShopifyVariantId    = variant.ShopifyVariantId;
            output.ShopifyVariantTitle = variant.ShopifyTitle;
            output.ShopifyVariantSku   = variant.ShopifySku;
            output.ShopifyVariantUrl
                = _shopifyUrlService.ShopifyVariantUrl(
                      variant.ShopifyProduct.ShopifyProductId, variant.ShopifyVariantId);
            output.ShopifyVariantTax   = variant.ShopifyIsTaxable ? "YES" : "NO";
            output.ShopifyVariantPrice = variant.ShopifyPrice;
            output.ShopifyVariantAvailQty
                = variant.ShopifyInventoryLevels.Sum(x => x.ShopifyAvailableQuantity);

            output.IsShopifyProductDeleted = variant.ShopifyProduct.IsDeleted;
            output.IsShopifyVariantMissing = variant.IsMissing;
            output.HasDuplicateSkus        = HasDuplicateSkus(variant.ShopifySku);

            if (variant.IsMatched())
            {
                var stockItemRecord = variant.MatchedStockItem();
                var stockItem       = _acumaticaJsonService.RetrieveStockItem(stockItemRecord.ItemId);

                output.AcumaticaItemId       = stockItemRecord.ItemId;
                output.AcumaticaItemDesc     = stockItemRecord.AcumaticaDescription;
                output.AcumaticaItemUrl      = _acumaticaUrlService.AcumaticaStockItemUrl(stockItemRecord.ItemId);
                output.AcumaticaItemTax      = stockItemRecord.IsTaxable(settings).YesNoNaPlainEnglish();
                output.AcumaticaItemPrice    = (decimal)stockItem.DefaultPrice.value;
                output.AcumaticaItemAvailQty = stockItemRecord.AcumaticaInventories.Sum(x => (int)x.AcumaticaAvailQty);

                output.HasMismatchedSku   = variant.AreSkuAndItemIdMismatched();
                output.HasMismatchedTaxes = variant.AreTaxesMismatched(settings);
            }

            return(output);
        }
コード例 #4
0
 public static bool IsNotMatched(this ShopifyVariant variant)
 {
     return(!variant.IsMatched());
 }