gpt4 book ai didi

magento - Magento 中是否删除了未转换的报价记录?

转载 作者:行者123 更新时间:2023-12-02 06:43:35 33 4
gpt4 key购买 nike

tl;dr:似乎没有其他现成的机制可以删除从未转换为订单的报价记录。

Mage_Sales模块有一个预定的作业来清理过期的报价,但这只会删除 sales_flat_quote标记为非事件的记录(即 is_active = 0 )。据我所知,只有当报价转换为订单时,报价才会被标记为无效。如果是这样的话,那么报价表只会越来越大。

引用号 Mage_Sales_Model_Observer::cleanExpiredQuotes()

class Mage_Sales_Model_Observer
{
//...

public function cleanExpiredQuotes($schedule)
{
Mage::dispatchEvent('clear_expired_quotes_before', array('sales_observer' => $this));

$lifetimes = Mage::getConfig()->getStoresConfigByPath('checkout/cart/delete_quote_after');
foreach ($lifetimes as $storeId=>$lifetime) {
$lifetime *= 86400;

/** @var $quotes Mage_Sales_Model_Mysql4_Quote_Collection */
$quotes = Mage::getModel('sales/quote')->getCollection();

$quotes->addFieldToFilter('store_id', $storeId);
$quotes->addFieldToFilter('updated_at', array('to'=>date("Y-m-d", time()-$lifetime)));
$quotes->addFieldToFilter('is_active', 0);

foreach ($this->getExpireQuotesAdditionalFilterFields() as $field => $condition) {
$quotes->addFieldToFilter($field, $condition);
}

$quotes->walk('delete');
}
return $this;
}

//...
}

最佳答案

用您自己的清理例程覆盖观察者。我们在特定的时间段内保留特定的报价,因此有 4 层删除。访客购物车会重新邮寄并可恢复,空的注册客户报价会在完整的报价旁边过期,并且根据观察到的客户行为,包含内容的注册购物车会保存很长一段时间。

<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/


/**
* Sales observer
*
* @category Chief
* @package Chief_Sales
* @author Magento Core Team <core@magentocommerce.com>
*/

/* Valid for 1.4.2.0, 1.5.1.0 */

class Chief_Sales_Model_Observer extends Mage_Sales_Model_Observer
{
/**
* Clean expired quotes (cron process)
*
* @param Mage_Cron_Model_Schedule $schedule
* @return Mage_Sales_Model_Observer
*/
public function cleanExpiredQuotes($schedule)
{
$lifetimes = Mage::getConfig()->getStoresConfigByPath('checkout/cart/delete_quote_after');

/* Quotes converted to orders */
foreach ($lifetimes as $storeId=>$lifetime) {
$lifetime *= 86400;

$quotes = Mage::getModel('sales/quote')->getCollection();
/* @var $quotes Mage_Sales_Model_Mysql4_Quote_Collection */

$quotes->addFieldToFilter('store_id', $storeId);
$quotes->addFieldToFilter('updated_at', array('to'=>date("Y-m-d", time()-$lifetime)));
$quotes->addFieldToFilter('is_active', 0); // Filled Quotes
$quotes->walk('delete');
}


/* Quotes abandoned by Guest Carts */
foreach ($lifetimes as $storeId=>$lifetime) {
$lifetime *= 86400;

// triple lifetime for abandoned cart remail
$lifetime *= 3;

$quotes = Mage::getModel('sales/quote')->getCollection();
/* @var $quotes Mage_Sales_Model_Mysql4_Quote_Collection */

$quotes->addFieldToFilter('store_id', $storeId);
$quotes->addFieldToFilter('updated_at', array('to'=>date("Y-m-d", time()-$lifetime)));
$quotes->addFieldToFilter('is_active', 1); // Active Quotes
$quotes->addFieldToFilter('customer_group_id', 0); // Which are Group NLI (Guest)
$quotes->walk('delete');
}


/* Quotes abandoned by Registered carts no contents */
foreach ($lifetimes as $storeId=>$lifetime) {
$lifetime *= 86400;

$quotes = Mage::getModel('sales/quote')->getCollection();
/* @var $quotes Mage_Sales_Model_Mysql4_Quote_Collection */

$quotes->addFieldToFilter('store_id', $storeId);
$quotes->addFieldToFilter('updated_at', array('to'=>date("Y-m-d", time()-$lifetime)));
$quotes->addFieldToFilter('is_active', 1); // Active Quotes
$quotes->addFieldToFilter('customer_group_id', array('gt'=>0)); // For all other groups
$quotes->addFieldToFilter('items_qty', 0); // For empty carts
$quotes->walk('delete');
}


/* Quotes abandoned by Registered carts */
foreach ($lifetimes as $storeId=>$lifetime) {
$lifetime *= 86400;

// Registered cart lifetime for abandoned cart remail 7*25 = 175 days
$lifetime *= 25;

$quotes = Mage::getModel('sales/quote')->getCollection();
/* @var $quotes Mage_Sales_Model_Mysql4_Quote_Collection */

$quotes->addFieldToFilter('store_id', $storeId);
$quotes->addFieldToFilter('updated_at', array('to'=>date("Y-m-d", time()-$lifetime)));
$quotes->addFieldToFilter('is_active', 1); // Active Quotes
$quotes->addFieldToFilter('customer_group_id', array('gt'=>0)); // For all other groups
$quotes->addFieldToFilter('items_qty', array('gt'=>0)); // For expired carts
$quotes->walk('delete');
}
return $this;
}
}

关于magento - Magento 中是否删除了未转换的报价记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12545128/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com