protected function getDemandedFields(array $demandedFields, array $incomingFields, \Bitrix\Sale\Order $order = null) { $result = array(); $userId = isset($incomingFields["USER_ID"]) && intval($incomingFields["USER_ID"]) > 0 ? intval($incomingFields["USER_ID"]) : 0; $currency = isset($incomingFields["CURRENCY"]) ? trim($incomingFields["CURRENCY"]) : ""; $personTypeId = isset($incomingFields['PERSON_TYPE_ID']) ? intval($incomingFields['PERSON_TYPE_ID']) : 0; $orderId = isset($incomingFields["ID"]) ? intval($incomingFields["ID"]) : 0; if ($order === null && intval($orderId) > 0) { $order = \Bitrix\Sale\Order::load($orderId); } foreach ($demandedFields as $demandedField) { switch ($demandedField) { case "BUYER_USER_NAME": $result["BUYER_USER_NAME"] = intval($userId) > 0 ? \Bitrix\Sale\Helpers\Admin\OrderEdit::getUserName(intval($userId)) : ""; break; case "PROPERTIES": $profileId = isset($incomingFields["BUYER_PROFILE_ID"]) ? intval($incomingFields["BUYER_PROFILE_ID"]) : 0; $result["PROPERTIES"] = \Bitrix\Sale\Helpers\Admin\Blocks\OrderBuyer::getProfileParams($userId, $profileId); break; case "BUYER_PROFILES_LIST": if (intval($personTypeId) <= 0) { throw new \Bitrix\Main\ArgumentNullException("personTypeId"); } $result["BUYER_PROFILES_LIST"] = \Bitrix\Sale\Helpers\Admin\Blocks\OrderBuyer::getBuyerProfilesList($userId, $personTypeId); break; case "BUYER_PROFILES_DATA": $result["BUYER_PROFILES_DATA"] = \Bitrix\Sale\Helpers\Admin\Blocks\OrderBuyer::getUserProfiles($userId); break; case "BUYER_BUDGET": $res = \CSaleUserAccount::getList(array(), array('USER_ID' => $userId, 'CURRENCY' => $currency, 'LOCKED' => 'N'), false, false, array('CURRENT_BUDGET')); if ($userAccount = $res->Fetch()) { $result["BUYER_BUDGET"] = $userAccount['CURRENT_BUDGET']; } else { $result["BUYER_BUDGET"] = 0; } break; case "PROPERTIES_ARRAY": if (!$order) { throw new \Bitrix\Main\SystemException("Can't init order"); } if (intval($personTypeId) <= 0) { throw new \Bitrix\Main\ArgumentNullException("personTypeId"); } $order->setPersonTypeId($personTypeId); $result["PROPERTIES_ARRAY"] = $order->getPropertyCollection()->getArray(); break; case "PRODUCT": $result["PRODUCT"] = array(); break; case "COUPONS": if (!$userId) { throw new \Bitrix\Main\ArgumentNullException("userId"); } $result["COUPONS"] = Admin\OrderEdit::getCouponsData(); break; case "COUPONS_LIST": $result["COUPONS_LIST"] = Admin\OrderEdit::getCouponList($order); break; default: throw new \Bitrix\Main\SystemException("Field: \"" . $demandedField . "\" is unknown!"); } } return $result; }
/** * @return string */ public function getScripts() { if (!static::$jsInited) { \Bitrix\Main\Page\Asset::getInstance()->addJs("/bitrix/js/sale/admin/order_basket.js"); static::$jsInited = true; } $data = static::prepareData(); $totalPrices = OrderEdit::getTotalPrices($this->order, $this, false); $langPhrases = array("SALE_ORDER_BASKET_TURN", "SALE_ORDER_BASKET_EXPAND", "SALE_ORDER_BASKET_UP_RATIO", "SALE_ORDER_BASKET_PROD_EDIT", "SALE_ORDER_BASKET_DOWN_RATIO", "SALE_ORDER_BASKET_PROD_COUNT", "SALE_ORDER_BASKET_NO_PICTURE", "SALE_ORDER_BASKET_PROD_CREATE", "SALE_ORDER_BASKET_ROW_SETTINGS", "SALE_ORDER_BASKET_PROD_MENU_EDIT", "SALE_ORDER_BASKET_PROD_MENU_DELETE", "SALE_ORDER_BASKET_BASE_CATALOG_PRICE", "SALE_ORDER_BASKET_PROD_EDIT_ITEM_SAVE", "SALE_ORDER_BASKET_KG", "SALE_ORDER_BASKET_COUPON", "SALE_ORDER_BASKET_COUPON_STATUS", "SALE_ORDER_BASKET_COUPON_APPLY", "SALE_ORDER_BASKET_COUPON_DELETE", "SALE_ORDER_BASKET_POSITION_EXISTS"); $result = '<script type="text/javascript">'; foreach ($langPhrases as $phrase) { $result .= ' BX.message({' . $phrase . ': "' . \CUtil::jsEscape(Loc::getMessage($phrase)) . '"});'; } if ($this->mode == self::EDIT_MODE) { $result .= ' BX.ready(function(){ ' . $this->jsObjName . '= new BX.Sale.Admin.OrderBasketEdit({ tableId: "' . $this->idPrefix . 'sale_order_edit_product_table", idPrefix: "' . $this->idPrefix . '", productsOrder: ' . \CUtil::phpToJSObject($data["ITEMS_ORDER"]) . ', products: ' . \CUtil::phpToJSObject($data["ITEMS"]) . ', visibleColumns: ' . \CUtil::phpToJSObject($this->visibleColumns) . ', objName: "' . $this->jsObjName . '", createProductBasement: ' . ($this->createProductBasement ? 'true' : 'false') . ', columnsCount: ' . count($this->visibleColumns) . ', createBasketBottom: true, iblocksSkuParams: ' . \CUtil::phpToJSObject($data["IBLOCKS_SKU_PARAMS"]) . ', productsOffersSkuParams: ' . \CUtil::phpToJSObject($data["PRODUCTS_OFFERS_SKU"]) . ', isShowXmlId: ' . ($this->isShowXmlId ? 'true' : 'false') . ', discounts: ' . \CUtil::phpToJSObject(OrderEdit::getOrderedDiscounts($this->order, false)) . ', mode: "edit", unRemovableFields: ["PRICE", "QUANTITY"], ' . $this->getTotalBlockFieldsJs($totalPrices, $data) . ' }); BX.Sale.Admin.OrderEditPage.registerFieldsUpdaters( ' . $this->jsObjName . '.getFieldsUpdaters() ); BX.Sale.Admin.OrderBasketCoupons.statusCouponApplyed = ' . DiscountCouponsManager::STATUS_APPLYED . '; BX.Sale.Admin.OrderBasketCoupons.mode = BX.Sale.Admin.OrderBasketCoupons.MODES_LIST.' . ($this->order->getId() > 0 ? 'EDIT' : 'CREATE') . '; BX.Sale.Admin.OrderBasketCoupons.setCoupons(' . \CUtil::phpToJSObject(OrderEdit::getCouponList($this->order, false)) . '); });'; $result .= $this->settingsDialog->getScripts(); } else { $result .= ' BX.ready(function(){ ' . $this->jsObjName . '= new BX.Sale.Admin.OrderBasket({ tableId: "' . $this->idPrefix . 'sale_order_view_product_table", idPrefix: "' . $this->idPrefix . '", productsOrder: ' . \CUtil::phpToJSObject($data["ITEMS_ORDER"]) . ', products: ' . \CUtil::phpToJSObject($data["ITEMS"]) . ', visibleColumns: ' . \CUtil::phpToJSObject($this->visibleColumns) . ', objName: "' . $this->jsObjName . '", createProductBasement: ' . ($this->createProductBasement ? 'true' : 'false') . ', iblocksSkuParams: ' . \CUtil::phpToJSObject($data["IBLOCKS_SKU_PARAMS"]) . ', columnsCount: ' . count($this->visibleColumns) . ', isShowXmlId: ' . ($this->isShowXmlId ? 'true' : 'false') . ', discounts: ' . \CUtil::phpToJSObject(OrderEdit::getOrderedDiscounts($this->order, false)) . ', createBasketBottom: true, mode: "view", ' . $this->getTotalBlockFieldsJs($totalPrices, $data) . ' }); BX.Sale.Admin.OrderEditPage.registerFieldsUpdaters( ' . $this->jsObjName . '.getFieldsUpdaters() ); BX.Sale.Admin.OrderBasketCoupons.mode = BX.Sale.Admin.OrderBasketCoupons.MODES_LIST.VIEW; BX.Sale.Admin.OrderBasketCoupons.setCoupons(' . \CUtil::phpToJSObject(OrderEdit::getCouponList($this->order, false)) . '); });'; $result .= $this->settingsDialog->getScripts(); } $result .= '</script>'; return $result; }