Я переношу магазин со старой платформы на Shopware 6. Мне нужно перенести заказы, и у меня возникают проблемы с этим. Я использую API, который вызывается скриптом, имеющим доступ к базе данных старой платформы. Я уже подтолкнул почти все другие объекты (клиенты, продукты, медиа, категории, ссылки между ними) с помощью API, и он отлично работает. В документации кажется, что сначала нужно создать корзину, а затем с помощью действия создать ее в заказе, затем добавить адрес заказа, оплату и перевести состояния с помощью действий на то, что требуется.
Для этого нет точного руководства, поэтому я закончил тем, что попытался отправить запрос POST с данными заказа на конечную точку order
следующим образом:
array:12 [
"orderNumber" => "100000546"
"price" => array:6 [
"netPrice" => 47.3519
"totalPrice" => 50.32
"positionPrice" => 50.32
"calculatedTaxes" => array:1 [
0 => array:3 [
"tax" => 3.314633
"taxRate" => 7
"price" => 50.32
]
]
"taxRules" => array:1 [
0 => array:2 [
"taxRate" => 7
"percentage" => 100
]
]
"taxStatus" => "gross"
]
"shippingCosts" => array:5 [
"unitPrice" => 4.95
"totalPrice" => 4.95
"quantity" => 1
"calculatedTaxes" => array:1 [
0 => array:3 [
"tax" => 0.3465
"taxRate" => 7
"price" => 4.95
]
]
"taxRules" => array:1 [
0 => array:2 [
"taxRate" => 7
"percentage" => 100
]
]
]
"billingAddressId" => "9f27c3c98dfe4e47ad2a9493da5807bc"
"currencyId" => "b7d2554b0ce847cd82f3ac9bd1c0dfca"
"languageId" => "2fbb5fe2e29a4d70aa5854ce7ce3e20b"
"salesChannelId" => "d1d7fc6faedb4600afd0cfe68f627f6d"
"orderDateTime" => "2014-11-03 08:27:43"
"currencyFactor" => 1
"stateId" => "8089405ce1e046f1819823d847125d25"
"lineItems" => array:1 [
0 => array:6 [
"identifier" => "5158757ba32b489faf70fcd7c4578604"
"productId" => "5158757ba32b489faf70fcd7c4578604"
"quantity" => 10
"label" => "Some product"
"position" => 1
"price" => array:5 [
"unitPrice" => 3.64
"totalPrice" => 36.3551
"quantity" => 10
"calculatedTaxes" => array:1 [
0 => array:3 [
"tax" => 0.2548
"taxRate" => 7
"price" => 36.3551
]
]
"taxRules" => array:1 [
0 => array:2 [
"taxRate" => 7
"percentage" => 100
]
]
]
]
]
"orderCustomer" => array:6 [
"customerId" => "cafedb542f2f488e99375192092c9032"
"salutationId" => "08f9cf197c0643ac98590948cf5dd9f8"
"firstName" => "xx
"lastName" => "xx
"email" => "xx
"customerNumber" => "10020"
]
]
Это создает заказ в базе данных, но я не вижу его в списке заказов в админке (admin#/sw/order/index
) - на самом деле он разбивает список, когда я пытаюсь изменить страницу списка. Если я открою другой заказ, а затем заменю идентификатор заказа на тот, который я создал, я могу открыть его, но в нем нет поля с подробностями. Я могу видеть только предметы, статус и документы. Я подозревал, что это связано с тем, что нет связанной информации об оплате и доставке, поэтому я добавил также order_address
объект через API, а затем попытался создать order_delivery
, чтобы у меня было состояние для отправки. К сожалению, я получаю это, когда пытаюсь создать такую сущность с состоянием:
0 => {#8643
+"code": "FRAMEWORK__WRITE_CONSTRAINT_VIOLATION"
+"status": "400"
+"detail": "This field is write-protected. (Got: "crud" scope and "system" is required)"
+"template": "This field is write-protected. (Got: "%s" scope and "%s" is required)"
+"meta": {#8655
+"parameters": array:2 [
0 => "crud"
1 => "system"
]
}
+"source": {#8664
+"pointer": "/0/stateIdstateId"
}
}
И я застрял. Мне нужна помощь. Могу ли я добавить к запросу какой-нибудь переключатель для принудительной записи (создать токен с system
областью действия?) В поле stateId
? Или мне надо выполнить действие? Но опять же, я не могу выполнить действие, если для объекта order_delivery
уже установлено значение _10 _...
Я все равно делаю это правильно? Пытаясь создать сущности напрямую (эти заказы служат просто архивом, все они уже выполнены)?