private ValidationResult ReadyToCreateOrder(long shopifyOrderId) { var output = new CreateOrderValidation(); var orderRecord = _syncOrderRepository.RetrieveShopifyOrderWithNoTracking(shopifyOrderId); var order = _shopifyJsonService.RetrieveOrder(shopifyOrderId); var settings = _settingsRepository.RetrieveSettings(); // If the Starting Shopify Order weren't populated, we would not be here i.e. // ... the Shopify Order would not have been pulled from API // output.SettingsStartingOrderId = settings.ShopifyOrderId.Value; output.ShopifyOrderRecord = orderRecord; output.ShopifyOrder = order; BuildLineItemValidations(output, settings); output.ShopifyShippingRateName = order.MaybeShippingRateTitle; output.HasValidShippingRate = _settingsRepository.RateMappingExists(order.MaybeShippingRateTitle); if (orderRecord.HasPayment()) { output.ShopifyPaymentGatewayId = orderRecord.PaymentTransaction().ShopifyGateway; output.HasValidGateway = _settingsRepository.GatewayExistsInConfig(output.ShopifyPaymentGatewayId); } return(output.Result()); }
private void BuildLineItemValidations(CreateOrderValidation validation, MonsterSetting settings) { foreach (var lineItem in validation.ShopifyOrder.line_items) { if (lineItem.sku == null) { validation.LineItemIdsWithUnrecognizedSku.Add(lineItem.id); } var variant = _syncInventoryRepository.RetrieveLiveVariant(lineItem.sku.StandardizedSku()); if (variant == null) { validation.SkusMissingFromShopify.Add(lineItem.sku); continue; } if (!variant.IsSynced()) { validation.SkusNotSyncedInAcumatica.Add(lineItem.sku); continue; } if (variant.AreSkuAndItemIdMismatched()) { validation.SkusWithMismatchedStockItemId.Add(lineItem.sku); } if (variant.AreTaxesMismatched(settings)) { validation.SkusWithMismatchedTaxes.Add(lineItem.sku); } } }