// ****************************************************
public static function getIdsCarritosAbandonadosFull($dias) {
$listIds = "";
$sql = "SELECT distinct c.id_cart FROM ps_cart c join ps_cart_product cp on c.id_cart=cp.id_cart where c.date_add BETWEEN (date_sub(NOW(), INTERVAL ".$dias." DAY)) AND NOW()";
if ($results = Db::getInstance()->ExecuteS($sql)) {
foreach ($results as $row) {
$listIds .= $row['id_cart'].",";
}
}
$listIds = substr($listIds, 0, -1); // quitar última coma
return $listIds;
}
Carritos abandonados sin nada comprado:
// ****************************************************
public static function getIdsCarritosAbandonadosEmpty($dias) {
$listIds = "";
$sql = "SELECT distinct * FROM ps_cart
where id_cart not in (select id_cart from ps_cart_product where date_add BETWEEN (date_sub(NOW(), INTERVAL 90 DAY)) AND NOW())
and date_add BETWEEN (date_sub(NOW(), INTERVAL 90 DAY)) AND NOW()";
if ($results = Db::getInstance()->ExecuteS($sql)) {
foreach ($results as $row) {
$listIds .= $row['id_cart'].",";
}
}
$listIds = substr($listIds, 0, -1); // quitar última coma
return $listIds;
}
Se llamaría por ejemplo desde AdminCarritosController.php:
$listIds = Cart::getIdsCarritosAbandonadosFull($dias);
// $listIds = Cart::getIdsCarritosAbandonadosEmpty($dias);
...
$this->_select =
'CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) `customer`, a.id_cart total, ca.name carrier,
IF (IFNULL(o.id_order, \''.$this->l('Non ordered').'\') = \''.$this->l('Non ordered').'\',
IF(TIME_TO_SEC(TIMEDIFF(\''.pSQL(date('Y-m-d H:i:00', time())).'\', a.`date_add`)) > 86400, \''.$this->l('Abandoned cart').'\', \''.$this->l('Non ordered').'\'), o.id_order) AS status,
IF(o.id_order, 1, 0) badge_success,
IF(o.id_order, 0, 1) badge_danger,
IF(co.id_guest, 1, 0) id_guest';
$this->_join = 'LEFT JOIN '._DB_PREFIX_.'customer c ON (c.id_customer = a.id_customer)
LEFT JOIN '._DB_PREFIX_.'carrier ca ON (ca.id_carrier = a.id_carrier)
LEFT JOIN '._DB_PREFIX_.'orders o ON (o.id_cart = a.id_cart)
LEFT JOIN `'._DB_PREFIX_.'connections` co ON (a.id_guest = co.id_guest AND TIME_TO_SEC(TIMEDIFF(\''.pSQL(date('Y-m-d H:i:00', time())).'\', co.`date_add`)) < 1800)';
$this->_where = ' AND c.lastname != "--" AND o.id_order is null and a.id_cart in ('.$listIds.')';
No hay comentarios:
Publicar un comentario