Estou tentando descobrir quantas vezes um produto foi encomendado nas últimas duas semanas. Até agora, tenho um loop para obter os produtos.
foreach($productCollection as $product){
}
Eu suponho que eu deveria ser capaz de obter os detalhes do pedido com este colocado dentro do loop
$order_items = Mage::getResourceModel('sales/order_item_collection')
Estou um pouco inseguro sobre como filtrar isso. Sei que ele precisa ser filtrado por ID do produto e também o pedido deve ter sido feito nas últimas duas semanas.
Como deve ser a sintaxe desta consulta, por favor?
Respostas:
Vamos começar pensando no SQL, não no Magento (chegaremos lá mais tarde). Eu escreveria como tal (ignorando os fusos horários por simplicidade):
Essa consulta funciona (eu testei). Então, como é que vamos escrever essa consulta no Magento?
sales_flat_order_item
- o Magento possui uma coleção de recursos especiais para esta tabela; nós podemos fazer uso disso.SUM
em uma das colunasWHERE
possui umaBETWEEN
cláusula - provavelmente podemos usarZend_Db_Expr
para gerar nosso período de rolagem personalizado de duas semanas.GROUP
Vamos ver se não conseguimos montar tudo, então, com uma chamada rápida
reset
para garantir que apenas recebamos as colunas que definimos e nada mais:Um simples eco
$query->getSelect()
mostra que a consulta está formatada muito bem:Outras considerações:
No futuro, você pode filtrar este relatório com base no status do pedido (ingressando em outra tabela) ou pode ter certeza de que os fusos horários estão corretos (no momento, são relatórios baseados no GMT).
A união é simples:
Mas adicionar fusos horários pode ser complicado. Procure
Mage_Core_Model_Date
alguns métodos que convertem carimbos de data e hora de e para GMT. Examine também a coleção de relatórios de vendas.Espero que ajude! Boa sorte.
fonte
$query
era!