protected function deleteShipmentAction() { $orderId = $this->request['order_id']; $shipmentId = $this->request['shipment_id']; if ($orderId <= 0 || $shipmentId <= 0) { throw new UserMessageException('Error'); } /** @var \Bitrix\Sale\Order $order */ $order = \Bitrix\Sale\Order::load($orderId); if (!$order) { throw new UserMessageException('Order with ID=' . $orderId . ' does not exist'); } $shipmentCollection = $order->getShipmentCollection(); $shipmentItem = $shipmentCollection->getItemById($shipmentId); if (!$shipmentItem) { throw new UserMessageException('Shipment with ID=' . $shipmentId . ' does not exist'); } $delResult = $shipmentItem->delete(); if ($delResult->isSuccess()) { $saveResult = $order->save(); if ($saveResult->isSuccess()) { $result["DELIVERY_PRICE"] = $shipmentCollection->getBasePriceDelivery(); $result["DELIVERY_PRICE_DISCOUNT"] = $shipmentCollection->getPriceDelivery(); $result['PRICE'] = $order->getPrice(); $result['PAYABLE'] = $result['PRICE'] - $order->getSumPaid(); $orderBasket = new Admin\Blocks\OrderBasket($order); $result["TOTAL_PRICES"] = Admin\OrderEdit::getTotalPrices($order, $orderBasket, false); $this->addResultData("RESULT", $result); } else { $this->addResultError(join("\n", $saveResult->getErrorMessages())); } } else { $this->addResultError(join("\n", $delResult->getErrorMessages())); } }
/** * @param Order $order * @return string HTML */ public static function getView(Order $order, $orderBasket) { $currency = $order->getCurrency(); $orderProps = $order->getPropertyCollection(); if ($email = $orderProps->getUserEmail()) { $email = $email->getViewHtml(); } if ($phone = $orderProps->getPhone()) { $phone = $phone->getViewHtml(); } if ($name = $orderProps->getPayerName()) { $name = $name->getViewHtml(); } $totalPrices = OrderEdit::getTotalPrices($order, $orderBasket, false); $result = ' <div class="adm-bus-orderinfoblock adm-detail-tabs-block-pin" id="sale-order-edit-block-order-info"> <div class="adm-bus-orderinfoblock-container"> <div class="adm-bus-orderinfoblock-title">' . Loc::getMessage("SALE_ORDER_INFO", array("#ID#" => $order->getId(), "#NUM#" => strlen($order->getField("ACCOUNT_NUMBER")) > 0 ? $order->getField("ACCOUNT_NUMBER") : $order->getId(), "#DATE#" => $order->getDateInsert()->toString())) . " [" . $order->getSiteId() . "]" . '<div class="adm-bus-orderinfoblock-status success" id="order_info_order_status_name">' . $order->getField('STATUS_ID') . '</div> <!-- TODO --> </div> <div class="adm-bus-orderinfoblock-content"> <div class="adm-bus-orderinfoblock-content-block-customer"> <ul class="adm-bus-orderinfoblock-content-customer-info"> <li> <span class="adm-bus-orderinfoblock-content-customer-info-param">' . Loc::getMessage("SALE_ORDER_INFO_FIO") . ':</span> <span class="adm-bus-orderinfoblock-content-customer-info-value" id="order_info_buyer_name">' . $name . '</span> </li> <li> <span class="adm-bus-orderinfoblock-content-customer-info-param">E-Mail:</span> <span class="adm-bus-orderinfoblock-content-customer-info-value" id="order_info_buyer_email">' . $email . '</span> </li> <li> <span class="adm-bus-orderinfoblock-content-customer-info-param">' . Loc::getMessage("SALE_ORDER_INFO_PHONE") . ':</span> <span class="adm-bus-orderinfoblock-content-customer-info-value" id="order_info_buyer_phone">' . $phone . '</span> </li> </ul> </div> <div class="adm-bus-orderinfoblock-content-block-order"> <ul class="adm-bus-orderinfoblock-content-order-info"> <li> <span class="adm-bus-orderinfoblock-content-order-info-param">' . Loc::getMessage("SALE_ORDER_INFO_PRICE") . '</span> <span class="adm-bus-orderinfoblock-content-order-info-value" id="order_info_price_basket">' . SaleFormatCurrency(floatval($totalPrices["PRICE_BASKET"]), $currency) . '</span> </li> <li class="adm-bus-orderinfoblock-content-redtext"> <span class="adm-bus-orderinfoblock-content-order-info-param">' . Loc::getMessage("SALE_ORDER_INFO_DISCOUNT_PRICE") . '</span> <span class="adm-bus-orderinfoblock-content-order-info-value" id="order_info_price_basket_discount">' . SaleFormatCurrency(floatval($totalPrices["PRICE_BASKET_DISCOUNTED"]), $currency) . '</span> </li> <li> <span class="adm-bus-orderinfoblock-content-order-info-param">' . Loc::getMessage("SALE_ORDER_INFO_DELIVERY_PRICE") . '</span> <span class="adm-bus-orderinfoblock-content-order-info-value" id="order_info_delivery_price">' . SaleFormatCurrency(floatval($order->getDeliveryPrice()), $currency) . '</span> </li> </ul> <ul class="adm-bus-orderinfoblock-content-order-info-result"> <li> <span class="adm-bus-orderinfoblock-content-order-info-param">' . Loc::getMessage("SALE_ORDER_INFO_ALL_PRICE") . '</span> <span class="adm-bus-orderinfoblock-content-order-info-value" id="order_info_buyer_price">' . SaleFormatCurrency(floatval($order->getPrice()), $currency) . '</span> </li> </ul> </div> <div class="adm-bus-orderinfoblock-content-block-last"> ' . Loc::getMessage("SALE_ORDER_INFO_PAYED") . ': ' . SaleFormatCurrency(floatval($order->getSumPaid()), $currency) . '<ul class="adm-bus-orderinfoblock-content-last">'; $updatersContent = ""; foreach (self::getPaymentsInfo($order) as $payment) { $result .= '<a href="#payment_' . $payment["ID"] . '" style="text-decoration: none;"> <li id="sale-admin-order-icon-payment-' . $payment["ID"] . '" class="adm-bus-orderinfoblock-content-last-icon ' . ($payment["IS_PAYED"] ? 'green' : 'red') . '" '; if (strval($payment["LOGOTIP_PATH"]) != '') { $result .= 'style="background-image: url(' . $payment["LOGOTIP_PATH"] . ');" '; } $result .= 'title="' . htmlspecialcharsbx($payment["NAME"]) . '"' . '><span></span></li></a>'; if (strlen($updatersContent) > 0) { $updatersContent .= ",\n"; } $updatersContent .= "\tPAYMENT_PAID_" . $payment["ID"] . ": function(paid) { BX.Sale.Admin.OrderInfo.setIconLamp('payment', '" . $payment["ID"] . "', (paid == 'Y' ? 'green' : 'red')); }"; } $result .= '</ul> ' . Loc::getMessage("SALE_ORDER_INFO_SHIPMENT") . ' <ul class="adm-bus-orderinfoblock-content-last">'; foreach (self::getShipmentsInfo($order) as $shipment) { $result .= '<a href="#shipment_' . $shipment["ID"] . '" style="text-decoration: none;"> <li id="sale-admin-order-icon-shipment-' . $shipment["ID"] . '" class="adm-bus-orderinfoblock-content-last-icon ' . ($shipment["DEDUCTED"] == "Y" ? 'green' : 'red') . '" '; if (strval($shipment["LOGOTIP_PATH"]) != '') { $result .= 'style="background-image: url(' . $shipment["LOGOTIP_PATH"] . ');" '; } $result .= 'title="' . htmlspecialcharsbx($shipment["NAME"]) . '"' . '><span></span></li></a>'; if (strlen($updatersContent) > 0) { $updatersContent .= ",\n"; } $updatersContent .= "\tSHIPMENT_STATUS_" . $shipment["ID"] . ": function(shipmentStatus) { BX.Sale.Admin.OrderInfo.setIconLamp('shipment', '" . $shipment["ID"] . "', (shipmentStatus == 'DF' ? 'green' : 'red')); }"; } $result .= '</ul> </div> </div> <div id="sale-order-edit-block-order-info-pin" onclick="BX.Sale.Admin.OrderEditPage.toggleFix(this.id, \'sale-order-edit-block-order-info\');" class="adm-detail-pin-btn-tabs" style="top: 9px;right: 5px;"></div> </div> </div>'; $orderEditOpts = \CUserOptions::GetOption("sale_admin", "sale_order_edit", array()); $isFixed = isset($orderEditOpts["fix_sale-order-edit-block-order-info"]) && $orderEditOpts["fix_sale-order-edit-block-order-info"] == "Y" ? true : false; if ($isFixed) { $result .= ' <script type="text/javascript"> BX.ready(function(){ setTimeout(function(){BX.Sale.Admin.OrderEditPage.toggleFix("sale-order-edit-block-order-info-pin", "sale-order-edit-block-order-info");},1); }); </script>'; } if (strlen($updatersContent) > 0) { $result .= ' <script type="text/javascript"> BX.ready(function(){ BX.Sale.Admin.OrderEditPage.registerFieldsUpdaters({ ' . $updatersContent . ' }); }); </script>'; } 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; }