Когда пользователь оплачивает частично со своего счета заказ, это отображается в админ.части.
[spoiler]
Все бы ничего, но вот после полной оплаты заказа, эта сумма затирается "итого":
Что влечет за собой ряд неудобств у бухгалтерии, курьеров, и прочих (в определенных бизнес-процессах).
Это происходит потому что в момент оплаты это поле затирается:
Исправить проблему можно двумяобработчиками событий ниже:
Все просто - перед оплатой заказа запоминаем старые поля, а затем (после оплаты идет апдейт заказа), перетираем поле на старое.
В конце нас ждал приятный сюрприз отображалось не только "оплачено" как итого, но и "оплачено со счета":
Чтобы сделали разные фразы, создалидею .
На этом все.
[spoiler]
Все бы ничего, но вот после полной оплаты заказа, эта сумма затирается "итого":
Что влечет за собой ряд неудобств у бухгалтерии, курьеров, и прочих (в определенных бизнес-процессах).
Это происходит потому что в момент оплаты это поле затирается:
Исправить проблему можно двумя
AddEventHandler('sale', 'OnSaleBeforePayOrder', array('CSaleDLHandlers', 'OnSaleBeforePayOrderHandler')); AddEventHandler('sale', 'OnBeforeOrderUpdate', array('CSaleDLHandlers', 'OnBeforeOrderUpdateHandler')); class CSaleDLHandlers { private static $arOrder = array(); public static function OnSaleBeforePayOrderHandler($ID, $val, $bWithdraw, $bPay, $recurringID, $arAdditionalFields) { self::$arOrder = CSaleOrder::GetByID($ID); } public static function OnBeforeOrderUpdateHandler($ID, $arFields) { if (!empty(self::$arOrder)) { $arFields['SUM_PAID'] = self::$arOrder['SUM_PAID']; self::$arOrder = array(); } } } |
В конце нас ждал приятный сюрприз отображалось не только "оплачено" как итого, но и "оплачено со счета":
Чтобы сделали разные фразы, создал
На этом все.