Shopify GraphQL: Создание варианта с количеством запасов 999

Вопрос или проблема

Я создаю варианты для продукта Shopify, используя productVariantsBulkCreate в Shopify GraphQL API:

mutation productVariantsBulkCreate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
  productVariantsBulkCreate(productId: $productId, strategy: REMOVE_STANDALONE_VARIANT, variants: $variants){
    (...)
  }
}

Входные данные для вариантов выглядят примерно так:

{
    barcode: db_variant.barcode,
    compareAtPrice: db_variant.compareAtPrice?.toFixed(2) || undefined,
    inventoryItem: {
      cost: db_variant.costPerItem,
      harmonizedSystemCode: db_variant.harmonizedSystemCode || undefined,
      measurement: measurement,
      requiresShipping: db_variant.physicalProduct,
      sku: db_variant.SKU,
      tracked: db_variant.trackQuantity,
    },
    inventoryPolicy: db_variant.continueSellingWhenOutOfStock
      ? "CONTINUE"
      : "DENY",
    mediaId: found_mediaId || undefined,
    optionValues: shopify_optionValues,
    price: db_variant.price.toFixed(2),
    taxable: db_variant.chargeTaxes,
  }

Я хочу установить доступное количество 999 для каждого варианта (в inventoryItem).

Ранее я мог установить это с помощью REST API Shopify без указания идентификатора места хранения.

Возможно ли это сделать с помощью GraphQL без идентификатора места хранения, который требует области “read_locations” и “read_inventory”?

Ответ или решение

Для создания вариантов продукта в Shopify с помощью GraphQL, включая установление начального количества запасов, необходимо следовать правильному подходу. К сожалению, создавая варианты, вы не сможете установить количество запасов без указания местоположения инвентаря. Shopify требует использование идентификатора местоположения для управления запасами, и для этого вам понадобятся соответствующие разрешения: read_locations и read_inventory.

Шаги для создания вариантов с количеством запасов

  1. Получение идентификатора местоположения: Прежде чем вы сможете установить количество запасов для варианта, вам необходимо получить идентификаторы доступных местоположений в вашем магазине. Вы можете сделать это, выполнив следующий запрос:
{
  locations(first: 10) {
    edges {
      node {
        id
        name
      }
    }
  }
}
  1. Создание варианта с указанием количества запасов: После получения идентификатора местоположения, вы можете использовать его для создания варианта с необходимым количеством в запасах. Вам необходимо внести изменения в структуру запроса productVariantsBulkCreate, чтобы добавить информацию о запасах. Пример этого запроса:
mutation productVariantsBulkCreate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
  productVariantsBulkCreate(productId: $productId, strategy: REMOVE_STANDALONE_VARIANT, variants: $variants) {
    userErrors {
      field
      message
    }
    variants {
      id
      inventoryItem {
        id
        tracked
      }
    }
  }
}

А вот пример того, как должен выглядеть объект для варианта с количеством запасов:

{
  "barcode": db_variant.barcode,
  "compareAtPrice": db_variant.compareAtPrice ? db_variant.compareAtPrice.toFixed(2) : null,
  "inventoryItem": {
    "cost": db_variant.costPerItem,
    "harmonizedSystemCode": db_variant.harmonizedSystemCode ? db_variant.harmonizedSystemCode : null,
    "measurement": measurement,
    "requiresShipping": db_variant.physicalProduct,
    "sku": db_variant.SKU,
    "tracked": db_variant.trackQuantity,
    "inventoryLevels": [{
      "locationId": "ID_ВАШЕГО_МЕСТОПОЛОЖЕНИЯ",
      "available": 999
    }]
  },
  "inventoryPolicy": db_variant.continueSellingWhenOutOfStock ? "CONTINUE" : "DENY",
  "mediaId": found_mediaId ? found_mediaId : null,
  "optionValues": shopify_optionValues,
  "price": db_variant.price.toFixed(2),
  "taxable": db_variant.chargeTaxes
}

Заключение

Таким образом, вам необходимо использовать идентификатор местоположения для выполнения настройки количества в запасах. Одновременно убедитесь, что у вашего приложения есть необходимые разрешения для работы с местоположениями и инвентарем. Используя вышеуказанные шаги, вы сможете успешно создать варианты продукта с необходимым количеством запасов в Shopify через GraphQL.

Оцените материал
Добавить комментарий

Капча загружается...