Magento 1.7 - 为特定客户购买推车产品

时间:2013-07-04 09:26:12

标签: magento

我确实需要检查特定客户在购物车中的产品(或仅限于哪些产品)。

我想创建一个cron任务来检查客户是否打开了比例2天更早的购物车,然后向他发送带有提醒消息的邮件。我有一个客户阵列:

$collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('*');
$customers = array();
foreach ($collection as $customer) {
    $customers[] = $customer->toArray();

但是两天后我找不到检查每个车的购物车项目的方法。 我试过了:

foreach ($customers as $item) {

   $quote = Mage::getModel('sales/quote')->loadByCustomer($item['entity_id']);

   if ($quote) {
       $collection = $quote->getItemsCollection(false);
   }
   else {
       echo '<script type="text/javascript">alert("test")</script>';
   }
   print_r($collection);
   foreach ($collection as $tmp)
       echo $tmp->getQty();
}

我还尝试了很多,但对我没什么用处:/ 我也不知道如何打印返回的项目,数组中的每个字段都受到保护。

如果你可以,或者你认为你可以,请帮助;)谷歌没有帮助。 感谢

1 个答案:

答案 0 :(得分:0)

我相信您正在使用Magento社区,因为Enterprise已经有一个废弃的购物车提醒。如果您有权访问Enterprise,可以在此处找到代码:Enterprise_Reminder_Model_Rule_Condition_Cart :: _ prepareConditionsSql($ customer,$ website) 此方法使用magento资源读取适配器创建原始sql,并添加不同的条件以验证是否放弃了购物车,您可以在下面看到其中一些(不要忘记检查quote.updated_at)

$select = $this->getResource()->createSelect();
$select->from(array('quote' => $table), array(new Zend_Db_Expr(1)));
...
$select->where('quote.is_active = 1');
$select->where($this->_createCustomerFilter($customer, 'quote.customer_id'));
...

我希望此摘录有助于您开始,我不知道我是否可以在此处发布Enterprise的代码。