This is an old revision of the document!
<?php defined('HOSTCMS') || exit('HostCMS: access denied.'); /** * Наблюдатель для работы с наценкой товара. */ class Shop_Order_Item_Observer_AdditionalFields { /** * Метод обратного вызова для кастомного поля shop_order_item.markup * * @param Shop_Order_Item_Model $oShopOrderItem * @param array $aArgs * @return string */ static public function onCallmarkup(Shop_Order_Item_Model $oShopOrderItem, array $aArgs) { $markup = self::_getMarkup($oShopOrderItem); if ($markup) { return $markup . ' ' . $oShopOrderItem->Shop_Order->Shop->Shop_Currency->name; } else { return '—'; } } /** * Метод обратного вызова для кастомного поля shop_order_item.price_without_markup * * @param Shop_Order_Item_Model $oShopOrderItem * @param array $aArgs * @return string */ static public function onCallprice_without_markup(Shop_Order_Item_Model $oShopOrderItem, array $aArgs) { return $oShopOrderItem->price - self::_getMarkup($oShopOrderItem); } /** * Добавляет наценку товара в заказе * * @param Shop_Order_Item_Model $oShopOrderItem * @param array $aArgs * @return void */ static public function onBeforeRedeclaredGetXml(Shop_Order_Item_Model $oShopOrderItem, array $aArgs) { $oShopOrderItem ->addEntity( Core::factory('Core_Xml_Entity') ->name('markup') ->value(self::_getMarkup($oShopOrderItem)) ); } /** * Возвращает наценку для товара в заказе * * @param Shop_Order_Item_Model $oShopOrderItem * @return number */ static protected function _getMarkup(Shop_Order_Item_Model $oShopOrderItem) { if (!$oShopOrderItem->shop_item_id) { return 0; } $oShopOrder = $oShopOrderItem->Shop_Order; $oShopOrderPropertyList = Core_Entity::factory('Shop_Order_Property_List', $oShopOrder->Shop->id); $oProperty = $oShopOrderPropertyList->Properties->getByTagName('markups'); if (!$oProperty) { return 0; } $aoPropertyValues = $oShopOrder->getPropertyValues(TRUE, array($oProperty->id)); if (!count($aoPropertyValues)) { return 0; } $aMakups = @json_decode($aoPropertyValues[0]->value, TRUE); if (isset($aMakups[$oShopOrderItem->shop_item_id])) { return $aMakups[$oShopOrderItem->shop_item_id]; } return 0; } }
Страницу создал Максим Засорин 23.01.17 в 14:43