Вопрос или проблема
Я создаю варианты для продукта 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
.
Шаги для создания вариантов с количеством запасов
- Получение идентификатора местоположения: Прежде чем вы сможете установить количество запасов для варианта, вам необходимо получить идентификаторы доступных местоположений в вашем магазине. Вы можете сделать это, выполнив следующий запрос:
{
locations(first: 10) {
edges {
node {
id
name
}
}
}
}
- Создание варианта с указанием количества запасов: После получения идентификатора местоположения, вы можете использовать его для создания варианта с необходимым количеством в запасах. Вам необходимо внести изменения в структуру запроса
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.