Limitando o conjunto de resultados da consulta SOAD do Magento

Como você pode especificar um conjunto de resultados máximo para consultas SOAD do Magento?

Estou consultando o Magento via SOAP API para obter uma lista de pedidos correspondentes a um determinado status. Nós temos alguns hosts remotos que demoram muito para retornar a lista, então eu gostaria de limitar o conjunto de resultados, porém não vejo um parâmetro para isso.

$orderListRaw = $proxy -> call ( $sessionId, 'sales_order.list', array ( array ( 'status' => array ( 'in' => $orderstatusarray ) ) ) ); 

Pude ver que recuperamos dados (6 minutos depois) e conseguimos lidar com tempos limite, etc., mas preferimos apenas forçar um conjunto máximo de resultados.

Não parece que pode ser feito usando o limite, (mais você teria que fazer uma lógica de paginação complexa para obter todos os registros, porque você precisaria saber o número total de registros e a api não possui um método para isso) Veja a lista de chamadas api @ http://www.magentocommerce.com/api/soap/sales/salesOrder/sales_order.list.html

Mas o que você poderia fazer como um trabalho ao redor é usar filtros complexos, para limitar a base do conjunto de resultados na data de criação. (ajuste sempre a hora, base dia ou semana no volume da ordem).

Além disso, uma vez que você está usando o tipo de status (assumindo que você está excluindo mais que apenas cancelar a ordem), você pode querer pensar em obter todas as ordens e acompanhar o order_id / status localmente (somente processa aqueles com o status acima) e o restante que não foi feito seria uma lista de id de pedidos que talvez precise de sua atenção mais tarde

Exemplo de código pseudo

 $params = array(array( 'filter' => array( array( 'key' => 'status', 'value' => array( 'key' => 'in', 'value' => $orderstatusarray, ), ), ), 'complex_filter' => array( array( 'key' => 'created_at', 'value' => array( 'key' => 'gteq', 'value' => '2012-11-25 12:00:00' ), ), array( 'key' => 'created_at', 'value' => array( 'key' => 'lteq', 'value' => '2012-11-26 11:59:59' ), ), ) )); $orderListRaw = $proxy -> call ( $sessionId, 'sales_order.list', $params); 

Leia mais sobre a filtragem @ http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-8-varien-data-collections