Хотя возможно, это не для неискренних. Вот приблизительное количество шагов, чтобы добавить строку в итоговую область, которая затем добавит ваш сбор к общей сумме.
В узле конфигурации <global><sales><quote><total>
добавьте новую запись (дополнительные примеры см. В app/code/core/Mage/Sales/etc/config.xml
)
<paymentFee>
<class>yourmodule/quote_address_total_paymentFee</class> <!-- A model -->
<after>subtotal</after>
</paymentFee>
Также в config.xml
добавить следующее к <global>
...
<fieldsets>
<sales_convert_quote>
<payment_fee><to_order>*</to_order></payment_fee>
</sales_convert_quote>
</fieldsets>
Создайте модель для расчета комиссии.
class Your_Module_Model_Quote_Address_Total_Warranty extends Mage_Sales_Model_Quote_Address_Total_Abstract
{
public function __construct()
{
$this->setCode('paymentFee');
}
public function collect(Mage_Sales_Model_Quote_Address $address)
{
// Check the payment method in use, if it is yours do...
$address->setPaymentFee($fee);
return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
if ($address->getPaymentFee()) {
$address->addTotal(array(
'code' => $this->getCode(),
'title' => 'Your module payment message',
'value' => $address->getPaymentFee()
));
}
return $this;
}
}
В настройках вашего модуля измените таблицы sales_flat_quote
и sales_flat_order
на , добавьте столбец payment_fee .
Значение <after>
в конфиге отвечает за определение порядка расчета, это может быть разделенный запятыми список итоговых кодов, включая «налог», «скидка» и т. Д. Вы также можете указать <before>
значение для тех же целей. Метод $address->addTotal
in fetch()
будет выполнять работу по обновлению общей суммы, которая будет взиматься с клиента. Необходимо изменить таблицы котировок и заказов, чтобы плата, которую вы взяли, была записана и показана администратору.
Можно также указать свой собственный рендерер, если по умолчанию это не так, я тоже это сделал, но еще сложнее.