Estoy tratando de averiguar cuántas veces se ordenó un producto en las últimas dos semanas. Hasta ahora tengo un bucle para obtener los productos.
foreach($productCollection as $product){
}
Supongo que debería poder obtener los detalles del pedido con esto colocado dentro del bucle
$order_items = Mage::getResourceModel('sales/order_item_collection')
No estoy seguro de cómo filtrar esto. Sé que debe filtrarse por ID de producto y también el pedido debe haberse realizado en las últimas 2 semanas.
¿Cómo debería ser la sintaxis para esta consulta, por favor?
Respuestas:
Comencemos pensando en el SQL, no en Magento (llegaremos allí más adelante). Lo escribiría como tal (ignorando las zonas horarias por simplicidad):
Esa consulta funciona (probé). Entonces, ¿cómo haríamos para escribir esta consulta en Magento?
sales_flat_order_item
: Magento tiene una colección especial de recursos para esta tabla; podemos hacer uso de eso.SUM
en una de las columnasWHERE
tiene unaBETWEEN
cláusula: probablemente podamos usarlaZend_Db_Expr
para generar nuestro marco de tiempo de 2 semanas.GROUP
Veamos si no podemos armarlo, entonces, con una llamada rápida
reset
para asegurarnos de que solo obtengamos las columnas que definimos, y nada más:Un simple eco de
$query->getSelect()
nos muestra que la consulta está formateada bastante bien:Otras Consideraciones:
En el futuro, es posible que desee filtrar este informe en función del estado del pedido (unirse a otra tabla) o puede asegurarse de que las zonas horarias sean precisas (en este momento está informando en base a GMT).
Unirse es simple:
Pero agregar zonas horarias puede ser complicado. Busque
Mage_Core_Model_Date
algunos métodos que conviertan las marcas de tiempo hacia y desde GMT. También mire la colección de informes de ventas.¡Espero que ayude! La mejor de las suertes.
fuente
$query
estaba!