在magento结帐页面中,在提供结算信息和发货信息之后,我知道这些详细信息正在发送到fedex然后运输费率填写在chekout页面中,然后将这些详细信息发送到fedex,我想改变其重量产品,我想为每种产品增加额外的重量,
假设用户添加重量为2磅的产品,我想发送 这些重量为2 * 5 = 10磅,我怎么能在magento中做到这一点?请 帮助
答案 0 :(得分:0)
不确定理解你想要什么,但我会尝试一下。
我认为您可以在本地池和本地方法中覆盖Mage_Checkout_OnepageController :: savePaymentAction方法,发送您自己的新事件' save_payment_action_before'并将您的对象作为参数传递。
在您的fedex模块中,创建一个观察者,获取您的对象并在发送给fedex之前更改订单权重。
要创建自定义活动,请检查this post
答案 1 :(得分:-1)
最后我发现它发生在sales / quote / item.php文件中,有一个名为setProduct的函数,这里我们需要在设置数据时添加附加信息。
public function setProduct($product)
{
$batchQty = Mage::getModel('catalog/product')->load($product->getId())->getBatchQty();
$roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$userrole = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
$userrole = strtolower($userrole);
if ($this->getQuote()) {
$product->setStoreId($this->getQuote()->getStoreId());
$product->setCustomerGroupId($this->getQuote()->getCustomerGroupId());
}
if($userrole=="retailer" && $batchQty>0 ){
$this->setData('product', $product)
->setProductId($product->getId())
->setProductType($product->getTypeId())
->setSku($this->getProduct()->getSku())
->setName($product->getName())
->setWeight($this->getProduct()->getWeight()*$batchQty)
->setTaxClassId($product->getTaxClassId())
->setBaseCost($product->getCost())
->setIsRecurring($product->getIsRecurring());
} else {
$this->setData('product', $product)
->setProductId($product->getId())
->setProductType($product->getTypeId())
->setSku($this->getProduct()->getSku())
->setName($product->getName())
->setWeight($this->getProduct()->getWeight())
->setTaxClassId($product->getTaxClassId())
->setBaseCost($product->getCost())
->setIsRecurring($product->getIsRecurring());
}
if ($product->getStockItem()) {
$this->setIsQtyDecimal($product->getStockItem()->getIsQtyDecimal());
}
Mage::dispatchEvent('sales_quote_item_set_product', array(
'product' => $product,
'quote_item' => $this
));
return $this;
}