Очистить рассрочку при изменении способа оплаты
В моем магазине есть два способа оплаты, один из которых основан на кредитной карте, а другой - на банковском переводе. Если я выберу кредитную карту и выберу рассрочку, Magento обновит промежуточный итог, добавив налоги.
Если я откажусь от оплаты кредитной картой и перейду на банковский перевод (у которого не должно быть налогов), налоги на рассрочку сохранятся. Как я могу оплатить рассрочку в этом ценарии?
Я пытался использовать эти события:
- проверка_типа_паге_сохранения_заказа_после
- sales_order_place_after_заказы_после
Но это не срабатывает, когда я меняю форму оплаты. Только когда спасен.
3
1 answers
Я решил создать событие sales_model_service_quote_submit_before на ModuleVendor/ModuleName/etc/events.xml :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_model_service_quote_submit_before">
<observer name="mpfix" instance="ModuleVendor\ModuleName\Observer\Mpfix" />
</event>
</config>
И наблюдатель:
<?php
namespace ModuleVendor\ModuleName\Observer;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;
class Mpfix implements ObserverInterface {
public function execute(EventObserver $observer) {
$order = $observer->getOrder();
$quote = $observer->getQuote();
if($order->getPayment()->getMethod() == "payment_method_code"){ //code of payment method
$quote->setFinanceCostAmount(0);
$quote->setBaseFinanceCostAmount(0);
$quote->save();
$order->setFinanceCostAmount(0);
$order->setBaseFinanceCostAmount(0);
$order->save();
}
}
}
1
Author: Eduardo, 2017-12-30 19:41:12