Magento: как переопределить getOrder getGrandTotal с целью изменения суммы при передаче значения в платежные модули - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь программно изменить общую сумму заказа, чтобы позволить пользователям оплатить часть платежа. Я пытался редактировать файл ядра Mage_Payment_Model_Info, метод getMethodInstance

if (method_exists($instance,"getOrder")){
    $order = $instance->getOrder(); 
}else{

        $session = Mage::getSingleton('checkout/session');
        $order = Mage::getModel('sales/order');
        $order->loadByIncrementId($session->getLastRealOrderId());

}
$total=$order->getGrandTotal()/2;
$order->setGrandTotal($total);

Я знаю, что это не лучший способ, но экспериментировал, чтобы найти лучший путь. Как этого добиться? Я планирую поместить изменения в пользовательский модуль. поэтому не собираюсь хранить изменения в основных файлах. спасибо

1 Ответ

1 голос
/ 15 июля 2011

Недавно мне пришлось сделать что-то похожее, и возникли большие проблемы, но сначала хорошие новости.

  • Сумма, начисляемая на основе счетов-фактур, счета за часть и оплаченной суммы заказа соответственно увеличится.
  • В заказе может быть много счетов.
  • Вам не нужно изменять общий итог. Оставьте это нетронутым в качестве записи того, что им нужно заплатить.

Однако

  • Элементы заказа каждый должен быть помечен как выставленный счет. Когда заказ оплачивается наполовину, вы должны решить, какие пункты учитываются разумно. Если в заказе есть один предмет на 10 долларов и один предмет на 100 долларов, которые оплачиваются за первые 20 долларов?
  • Заказ не может быть переплачен. Из-за ложного предположения разница между причитающейся суммой и уплаченной суммой («задолженность») не будет отображать отрицательных чисел, это является ошибкой и затрудняет одновременную оплату двух ожидающих заказов.

Один из способов, о котором я не думал вовремя, - это иметь кредитные счета для каждого клиента. Если размер платежа меньше, чем весь заказ, добавьте его в учетную запись и оставьте заказ пока неоплаченным. Разрешить произвольные (предварительные) платежи на счет. Как только учетная запись станет достаточно большой, используйте ее для оплаты заказа, возможно, вы захотите создать модуль оплаты для этого бита.
Или же он может работать в обратном порядке, немедленно оплачивать все заказы и оставлять отрицательный баланс на кредитном счете для оплаты позднее. Я подозреваю, что это был бы наименее болезненный способ из всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...