Jump to content

Filtrar opciones de lista desplegable segun calendario en Estadisticas del BO


R H

Recommended Posts

Saludos colegas, estoy construyendo mi web con Prestashop 1.4.9, actualmente estoy creando unos modulos que necesito para la pestaña Estadisticas del BO y me encuentro con unos inconvenientes:

 

Quiero que el modulo me muestre una lista desplegable con los id_order de los pedidos que se han realizado en el periodo definido en el calendario de la pestaña Estadisticas del BO, cuando selecciono el id del pedido en la lista desplegable se muestran los productos asociados al pedido con algunos datos.

 

He logrado hacerlo en parte, utilizando como base el modulo statsstock, pero no consigo hacer que muestre en la lista desplegable solo los pedidos que estan comprendidos dentro del periodo definido por el calendario. Me aparecen en la lista desplegable todos los pedidos de la tienda independientemente del periodo definido en el calendario.

 

Me parece que la clave está en la definicion de las opciones :

 

<form action="'.$ru.'" method="post" style="float:right">

<input type="hidden" name="submitOrder" value="1" />

'.$this->l('Pedidos').' : <select name="statsstock_id_order" onchange="this.form.submit();">

<option value="0">-- '.$this->l('Todos').' --</option>';

foreach (Order::getOrders($cookie->id_order) as $order)

echo '<option value="'.(int)$order['id_order'].'" '.($cookie->statsstock_id_order == $order['id_order'] ? 'selected="selected"' : '').'>'.$order['id_order'].'</option>';

echo ' </select>

</form>

 

Como se ve llama a la funcion getOrders de la clase Order que esta en el archivo Order.php y considera a todos los pedidos como se puede ver en este extracto del archivo Order.php:

 

public static function getOrders($limit = NULL)

{

Tools::displayAsDeprecated();

return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('

SELECT *

FROM `'._DB_PREFIX_.'orders`

ORDER BY `date_add`

'.((int)$limit ? 'LIMIT 0, '.(int)$limit : ''));

}

 

Entonces, la pregunta es como consigo que en la lista desplegable me aparezcan solo los pedidos que se han hecho o pagado dentro del periodo del calendario.

 

Hay otras funciones como la que muestro a continuacion, pero a pesar de probar no he conseguido hacerlas funcionar:

 

public static function getOrdersIdInvoiceByDate($date_from, $date_to, $id_customer = NULL, $type = NULL)

{

$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('

SELECT `id_order`

FROM `'._DB_PREFIX_.'orders`

WHERE DATE_ADD(invoice_date, INTERVAL -1 DAY) <= \''.pSQL($date_to).'\' AND invoice_date >= \''.pSQL($date_from).'\''

.($type ? ' AND '.pSQL(strval($type)).'_number != 0' : '')

.($id_customer ? ' AND id_customer = '.(int)($id_customer) : '').

' ORDER BY invoice_date ASC');

 

$orders = array();

foreach ($result AS $order)

$orders[] = (int)($order['id_order']);

return $orders;

}

 

Esta si incluye las fechas del calendario, pero no se como colocarlas correctamente.

 

No soy experto, soy autodidacta asi que les agradeceria mucho su ayuda.

Link to comment
Share on other sites

Yo suelo controlar los intervalos de fechas dentro de los controllers ya que ahi puedes procesar los valores antes de pasar a los viewers, haces el filtrado dentro los controles para el apartado que quieras, para que solamente pasen los registros que necesites a los viewers.

Link to comment
Share on other sites

Gracias por la idea, pero ya opté por utilizar la pestaña pedidos mejorandola para poder gestionar la tienda. Quise hacerlo desde estadisticas, pero despues de mucho probar me es mas facil clonando y mejorando la pestaña pedidos.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...