Example #1
0
 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;
 }
Example #2
0
    /**
     * @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;
    }