Magento结帐中的多个原始邮政编码

如何解决Magento结帐中的多个原始邮政编码

| 我正在为客户做Magento店面。他们使用dropshippers,所以一个邮政编码对我们没有多大帮助。我们确实将其设置为客户端从中寄出的最常见的邮政编码,因此在很多情况下都可以。 但是,在某些情况下,需要使用不同的原始邮政编码。在极少数情况下,我们将有多个原始邮政编码。如果存在与主要拉链不同的zip,我们会将其存储在一个名为“'origin zip \”的属性中(创意,是吗?) 我应该在哪里进行修改?我们只使用UPS运送方式,我想做的是在计算运送之前,先抓取购物车中可能有的任何原始拉链(我想我们已经准备好了这部分),但是,根据结果,我可能需要遍历运输计算并将这些值加在一起-例如,如果他们订购的一种产品带有原始邮政编码,而另一种产品没有原始邮政编码,则必须计算出首先,然后是第二个,然后将它们加在一起。 如果有人可以指出需要修改PHP文件或类的正确方向,我将不胜感激。     

解决方法

首先,您需要将自定义属性添加到将在购物车中使用的属性列表。 在stackoverflow上遵循以下答案: 如何在magento 1.4.1.1中将自定义上传的图像添加到购物车? 然后,您需要创建自定义的送货方式,可能是您自己的一种。它应该浏览从装运请求中收到的物品,并检查不同的zip来源,然后分别计算它们的价格。 希望对您来说,创建扩展现有运输方法功能的模块不会有问题。 干杯! 更新 要将属性添加到购物车项目中加载的产品,请使用以下配置:
<config>
     <global>
          <sales>
               <quote>
                    <item>
                        <product_attributes>
                             <origin_zip />
                        </product_attributes>
                    </item>
               </quote>
          </sales>
     </global>
</config>
然后在运输方法模型中使用如下所示的内容(以USPS为例):
public function collectRates(Mage_Shipping_Model_Rate_Request $request)
{
    if (!$this->getConfigFlag(\'active\')) {
        return false;
    }

    $defaultOriginZip = Mage::getStoreConfig(\'shipping/origin/postcode\',$this->getStore());

    $requestDataByOriginZip = array();
    // Walking through quote items
    foreach ($request->getAllItems() as $quoteItem) {
        // If virtual or not shippable separately,it should be skipped
        if ($quoteItem->isVirtual() || $quoteItem->isDummy(true)) {
            continue;
        }
        // Retrieving origin zip code
        if ($quoteItem->getProduct()->getOriginZip()) {
            $zipCodeForCalculation = $quoteItem->getProduct()->getOriginZip();
        } else {
            $zipCodeForCalculation = $defaultOriginZip;
        }

        if (!isset($requestDataByOriginZip[$zipCodeForCalculation])) {
            // Default values initialization for this zip code
            $requestDataByOriginZip[$zipCodeForCalculation] = array(
                \'orig_postcode\' => $zipCodeForCalculation,\'package_weight\' => 0,\'package_value\' => 0,// etc...
            );
        }

        $requestDataByOriginZip[$zipCodeForCalculation][\'package_weight\'] += $quoteItem->getRowWeight();
        $requestDataByOriginZip[$zipCodeForCalculation][\'package_value\'] += $quoteItem->getBaseRowTotal();
        // Etc...
    }

    $results = array();
    foreach ($requestDataByOriginZip as $requestData) {
       $requestByZip = clone $request; // Cloning to prevent changing logic in other shipment methods.
       $requestByZip->addData($requestData);
       $this->setRequest($requestByZip);
       // Returns rate result for current request
       $results[] = $this->_getQuotes();
    }

    $yourMergedResult = Mage::getModel(\'shipping/rate_result\');

    foreach ($results as $result) {
       // Logic for merging the rate prices....
    }

    return $yourMergedResult;
}
    ,类
usa/shipping_ups
是处理这些请求的类,特别是方法
setRequest
似乎满足您的需求:
    if ($request->getOrigPostcode()) {
        $r->setOrigPostal($request->getOrigPostcode());
    } else {
        $r->setOrigPostal(Mage::getStoreConfig(\'shipping/origin/postcode\',$this->getStore()));
    }  
如果您可以将orig_postcode添加到运输请求中,则UPS将基于该来源返回报价。 一种解决方法是重写ѭ5并添加一个称为
getOrigPostcode
的方法。由于是一个真实的方法,它将覆盖默认的Magento getter / setter行为。让此方法查询请求的内容以找出需要使用的zip。 希望有帮助! 谢谢, 乔     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?