Список заказов на продажу Magento API V2 не работает

#web-services #magento

#веб-сервисы #magento

Вопрос:

Я использую API V2 « salesOrderList » для получения списка всех заказов, которые были размещены в Magento. Но ответ SOAP показывает мне ошибку как:-

 Item (Mage_Sales_Model_Order) with the same id "1" already exist
  

Я использую Magento Enterprise версии 1.9.0.0.

После изучения SQL и поиска в базе данных я обнаружил, что для каждого заказа SQL предоставляет 4 записи для одного и того же идентификатора объекта заказа; разница заключается только в полях имени области выставления счетов и доставки. Также запрос выполняет два левых соединения с одной и той же таблицей базы данных « sales_flat_order_address «, используя два разных псевдонима (один для выставления счетов, а другой для доставки). Насколько я понимаю, это должно было сработать, чего не происходит.

Кто-нибудь, пожалуйста, может подсказать, что происходит и что можно сделать, чтобы исправить эту ошибку?

Любая помощь приветствуется и заранее благодарна.

Ответ №1:

Грубо говоря, Magento создает для вас коллекцию заказов и пытается загрузить все записи. В этой коллекции есть правило, которое позволяет создавать только один объект заказа для каждого идентификатора, поэтому при загрузке вашего дополнительного объекта выдается исключение.

Проблема может быть в соединениях слева, но сразу сказать сложно. Не могли бы вы опубликовать немного подробностей о том, как вы выполняете вызов API? Эта проблема часто возникает при неправильном соединении.


Редактировать:

Если вы используете код по умолчанию, моим первым предположением было бы, что в базе данных есть ошибочные записи или что это обновленная система Magento, у которой в прошлом было плохое обновление. Попробуйте это на чистой копии вашей EE-версии, указывающей на ту же базу данных. Если возникает та же проблема, возможно, вам потребуется выполнить поиск в базе данных в поисках причины проблемной загрузки данных. Поскольку у вас уже есть запрос, вы можете захотеть выделить части запроса, чтобы посмотреть, не возвращает ли какой-либо подзапрос слишком много данных.

Комментарии:

1. Я использую код Magento по умолчанию, но и в этом случае я получаю ту же ошибку. Вы можете посмотреть на этот класс » Mage_Sales_Model_Order_Api_V2 » для этого метода » items «. Меня беспокоит только то, почему код Magento по умолчанию не работает и что я должен сделать, чтобы это заработало? Пожалуйста, помогите. Спасибо.

2. После выполнения упомянутых вами шагов я обнаружил, что результатом SQL является 4 записи для каждого заказа. Причина этого отчасти в том, что адрес выставления счета и адрес доставки отличаются. Тем не менее, многие предыдущие встречи с заказами такого типа по-прежнему работают только с одной записью для каждого заказа. Еще какие-нибудь идеи?

3. Если адреса выставления счетов и доставки хранятся как разные псевдонимы, нет причин, по которым это должно приводить к мультиплексированию каждой записи. Можете ли вы отредактировать вопрос с помощью сгенерированного SQL и примера одного заказа (все четыре строки), который возвращается?

4. Большое спасибо за ваши ценные предложения. После переустановки всей промежуточной версии Magento Enterprise это начало работать корректно, без каких-либо подобных проблем. (фух)