У меня есть программа, которую мы используем для подключения нашего магазина Magento к нашей системе управления запасами через API. В настоящее время он выполняет запрос API Magento для всех заказов в состоянии ожидания, вставляет их в заднюю систему, а затем устанавливает их статус "Обработка в Magento". Из-за ограничений в нашей системе инвентаризации мы можем вставлять только ограниченное количество заказов за раз. Мы контролируем это, запустив весь процесс через цикл if, как показано ниже (FYI, код был отредактирован для отображения только ключевых частей этой проблемы):
//The maximum number of orders to download
$iMaxCount = 10 ;
try {
$proxy = new SoapClient($wsdl_url);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
$sessionId = $proxy->login($login, $password);
//fetch the pending orders from the site
$field = array(array('status'=>array( 'pending') ));
$arr = $proxy->call($sessionId, 'sales_order.list', $field);
$iCnt = 0;
foreach($arr as $key => $value){
//only down up to the max count
if ($iCnt < $iMaxCount) {
[... Do the updating and insertion part of the program ...]
$iCnt++;
} //End of looping through orders
Очевидное падение этого пути - мне все равно придется вытащить все отложенные ордера, хотя я буду работать только с 10 из них. т.е. если у меня есть 200 отложенных ордеров, API возвращает все 200 из них, обрабатывает 10, а затем пропускает остальные. То, что я хочу сделать, - это изменить фильтр вызова API, чтобы вывести только 10 заказов во время обработки статуса. Это позволит мне удалить накладные расходы if и сделать программу более эффективной, поскольку она получает только нужные ему данные.
Кто-нибудь знает, как применить этот тип фильтра? Все, что я видел, предполагает, что вы можете сделать это только в том случае, если знаете номера заказов и установите ограничения на основе этого. Спасибо за помощь!