$arReports[] = array("TEXT" => $rep_title, "ONCLICK" => "window.open('/bitrix/admin/sale_order_print_new.php?&ORDER_ID=" . $ID . "&doc=" . substr($file, 0, strlen($file) - 4) . "&" . bitrix_sessid_get() . "', '_blank');"); } } } closedir($handle); } } $aMenu[] = array("TEXT" => Loc::getMessage("SALE_OVIEW_TO_PRINT"), "TITLE" => Loc::getMessage("SALE_OVIEW_TO_PRINT_TITLE"), "LINK" => "/bitrix/admin/sale_order_print.php?ID=" . $ID . "&lang=" . LANGUAGE_ID . GetFilterParams("filter_"), "MENU" => $arReports); $aMenu[] = array("TEXT" => Loc::getMessage("SALE_OVIEW_ORDER_COPY"), "TITLE" => Loc::getMessage("SALE_OVIEW_ORDER_COPY_TITLE"), "LINK" => '/bitrix/admin/sale_order_create.php?lang=' . LANGUAGE_ID . "&SITE_ID=" . $saleOrder->getSiteId() . "&ID=" . $ID . "&" . bitrix_sessid_get() . GetFilterParams("filter_")); $aMenu[] = array("TEXT" => Loc::getMessage("SALE_OVIEW_DELETE"), "TITLE" => Loc::getMessage("SALE_OVIEW_DELETE_TITLE"), "LINK" => "javascript:if(confirm('" . GetMessageJS("SALE_OVIEW_DEL_MESSAGE") . "')) window.location='sale_order.php?ID=" . $ID . "&action=delete&lang=" . LANGUAGE_ID . "&" . bitrix_sessid_get() . urlencode(GetFilterParams("filter_")) . "'", "WARNING" => "Y"); $context = new CAdminContextMenu($aMenu); $context->Show(); //prepare blocks order $defaultBlocksOrder = array("statusorder", "buyer", "delivery", "financeinfo", "payment", "additional", "basket"); $formId = "sale_order_view"; $orderBasket = new Admin\Blocks\OrderBasket($saleOrder, "BX.Sale.Admin.OrderBasketObj", "sale_order_basket", true, Admin\Blocks\OrderBasket::VIEW_MODE); echo Admin\OrderEdit::getScripts($saleOrder, $formId); echo Admin\Blocks\OrderInfo::getScripts(); echo Admin\Blocks\OrderBuyer::getScripts(); echo Admin\Blocks\OrderPayment::getScripts(); echo Admin\Blocks\OrderStatus::getScripts($saleOrder, $USER->GetID()); echo Admin\Blocks\OrderAdditional::getScripts(); echo Admin\Blocks\OrderFinanceInfo::getScripts(); echo Admin\Blocks\OrderShipment::getScripts(); echo Admin\Blocks\OrderAnalysis::getScripts(); echo $orderBasket->getScripts(); $fastNavItems = array(); foreach ($defaultBlocksOrder as $item) { $fastNavItems[$item] = Loc::getMessage("SALE_OVIEW_BLOCK_TITLE_" . toUpper($item)); } // navigation
protected function getProductEditDialogHtmlAction() { $currency = isset($this->request['currency']) ? $this->request['currency'] : array(); $objName = isset($this->request['objName']) ? $this->request['objName'] : ""; $this->addResultData('DIALOG_CONTENT', Admin\Blocks\OrderBasket::getProductEditDialogHtml($currency, $objName)); }
public static function getView(Order $order, OrderBasket $orderBasket, $selectPayment = null, $selectId = null) { // prepare data $orderId = $order->getId(); $data = $orderBasket->prepareData(); $items = $data['ITEMS']; $documents = array(); $itemNo = 0; /** @var \Bitrix\Sale\Payment $payment */ foreach ($order->getPaymentCollection() as $payment) { $documents[] = $payment; } /** @var \Bitrix\Sale\Shipment $shipment */ foreach ($order->getShipmentCollection() as $shipment) { if (!$shipment->isSystem()) { if (!$shipment->isCanceled() && $shipment->isShipped()) { /** @var \Bitrix\Sale\ShipmentItem $shipmentItem */ foreach ($shipment->getShipmentItemCollection() as $shipmentItem) { $basketItem = $shipmentItem->getBasketItem(); if (isset($items[$basketItem->getBasketCode()])) { $item =& $items[$basketItem->getBasketCode()]; if ($shippedQuantity =& $item['SHIPPED_QUANTITY']) { $shippedQuantity += (double) $shipmentItem->getField('QUANTITY'); } else { $shippedQuantity = (double) $shipmentItem->getField('QUANTITY'); } } } } $documents[] = $shipment; } } unset($item, $shippedQuantity); usort($documents, array(__CLASS__, 'sortDocumentsByDate')); // render view ob_start(); ?> <div class="adm-s-order-table-ddi"> <table class="adm-s-order-table-ddi-table adm-s-bus-ordertable-option" style="width: 100%;"> <thead> <tr> <td class="tac"><?php echo Loc::getMessage('SALE_OANALYSIS_ITEM_NUMBER'); ?> </td> <td><?php echo Loc::getMessage('SALE_OANALYSIS_ITEM_NAME'); ?> </td> <td class="tac"><?php echo Loc::getMessage('SALE_OANALYSIS_ITEM_PROPERTIES'); ?> </td> <td class="tac"><?php echo Loc::getMessage('SALE_OANALYSIS_ITEM_PLANNED'); ?> </td> <td class="tac"><?php echo Loc::getMessage('SALE_OANALYSIS_ITEM_SHIPPED'); ?> </td> <td class="tac"><?php echo Loc::getMessage('SALE_OANALYSIS_ITEM_TO_SHIP'); ?> </td> </tr> </thead> <tbody> <?php foreach ($items as $item) { $properties = '<table style="margin: auto; width: 50%;">'; if (is_array($item['SKU_PROPS'])) { foreach ($item['SKU_PROPS'] as $skuProp) { $properties .= '<tr>'; $properties .= '<td style="text-align: left;">' . htmlspecialcharsbx($skuProp['NAME']) . ' : ' . '</td>'; if (isset($skuProp['VALUE']['PICT']) && $skuProp['VALUE']['PICT']) { $properties .= '<td><span class="color"><img src="' . $skuProp['VALUE']['PICT'] . '" alt=""></span></td>'; } else { $properties .= '<td><span>' . htmlspecialcharsbx($skuProp['VALUE']['NAME']) . '</span></td>'; } $properties .= '</tr>'; } } $properties .= '</table>'; if (!($quantity = (double) $item['QUANTITY'])) { $quantity = 0; } if (!($shippedQuantity = $item['SHIPPED_QUANTITY'])) { $shippedQuantity = 0; } ?> <tr class="bdb-line"> <td class="tac"><?php echo ++$itemNo; ?> </td> <td style="text-align: left;"><a class="fwb" href="<?php echo $item['EDIT_PAGE_URL']; ?> "><?php echo htmlspecialcharsbx($item['NAME']); ?> </a></td> <td class="tac"><?php echo $properties; ?> </td> <td class="tac"><?php echo $quantity . ' ' . $item['MEASURE_TEXT']; ?> </td> <td class="tac"><?php echo $shippedQuantity . ' ' . $item['MEASURE_TEXT']; ?> </td> <td class="tac"><?php echo $quantity - $shippedQuantity . ' ' . $item['MEASURE_TEXT']; ?> </td> </tr> <?php } ?> <tr><td colspan="8" style="padding: 16px; background: #f7fafa; text-align: left;" class="fwb"><?php echo Loc::getMessage('SALE_OANALYSIS_ITEMS_QUANTITY') . ': ' . count($items); ?> </td></tr> </tbody> </table> <div class="adm-bus-table-contaier-white caption border" style="margin-top: 25px;"> <div class="adm-bus-table-caption-white-title"><?php echo Loc::getMessage('SALE_OANALYSIS_DOCUMENTS'); ?> :</div> <div class="adm-bus-orderdocs-threelist-container"> <div class="adm-bus-orderdocs-threelist-block-top<?php echo $selectPayment === null ? ' adm-bus-orderdocs-threelist-block-children-open' : ''; ?> "> <div class="adm-bus-orderdocs-threelist-block-img adm-bus-orderdocs-threelist-block-img-order"></div> <div class="adm-bus-orderdocs-threelist-block-content"> <div class="adm-bus-orderdocs-threelist-block-title"> <a class="adm-bus-orderdocs-threelist-block-title-link fwb" href="/bitrix/admin/sale_order_edit.php?lang=ru&ID=<?php echo $orderId; ?> "> <?php echo Loc::getMessage('SALE_OANALYSIS_ORDER_TITLE', array('#USER_ID#' => $order->getField('USER_ID'), '#ORDER_ID#' => $orderId)); ?> </a> </div> <?php self::renderBottomBlocks($order->getField('DATE_INSERT'), $order->getField('RESPONSIBLE_ID')); ?> </div> <div class="clb"></div> </div> <?php foreach ($documents as $document) { $isPayment = $document instanceof Payment; $documentId = $document->getId(); ?> <div class="adm-bus-orderdocs-threelist-block-children<?php echo $selectPayment === $isPayment && $selectId == $documentId ? ' adm-bus-orderdocs-threelist-block-children-open' : ''; ?> "> <div class="adm-bus-orderdocs-threelist-block-img adm-bus-orderdocs-threelist-block-img-doc_<?php echo $isPayment ? 'payment' : 'shipping'; ?> "></div> <div class="adm-bus-orderdocs-threelist-block-content"> <div class="adm-bus-orderdocs-threelist-block-title"> <?php if ($isPayment) { ?> <?php if ($document->isPaid()) { ?> <span class="adm-bus-orderdocs-docstatus adm-bus-orderdocs-docstatus-paid"><?php echo Loc::getMessage('SALE_OANALYSIS_PAYMENT_PAID'); ?> </span> <?php } elseif ($document->isReturn()) { ?> <span class="adm-bus-orderdocs-docstatus"><?php echo Loc::getMessage('SALE_OANALYSIS_PAYMENT_RETURN'); ?> </span> <?php } ?> <a href="/bitrix/admin/sale_order_payment_edit.php?order_id=<?php echo $orderId; ?> &payment_id=<?php echo $documentId; ?> " class="adm-bus-orderdocs-threelist-block-title-link"> <?php echo Loc::getMessage('SALE_OANALYSIS_PAYMENT_TITLE', array('#SYSTEM_NAME#' => htmlspecialcharsbx($document->getField('PAY_SYSTEM_NAME')), '#PAYMENT_ID#' => $documentId, '#SUM#' => SaleFormatCurrency($document->getField('SUM'), $document->getField('CURRENCY')))); ?> </a> <?php } else { /* shipment*/ ?> <?php if ($document->isShipped()) { ?> <span class="adm-bus-orderdocs-docstatus adm-bus-orderdocs-docstatus-shippingallowed"><?php echo Loc::getMessage('SALE_OANALYSIS_SHIPMENT_SHIPPED'); ?> </span> <?php } elseif ($document->isCanceled()) { ?> <span class="adm-bus-orderdocs-docstatus adm-bus-orderdocs-docstatus-canceled"><?php echo Loc::getMessage('SALE_OANALYSIS_SHIPMENT_CANCELED'); ?> </span> <?php } elseif ($document->isAllowDelivery()) { ?> <span class="adm-bus-orderdocs-docstatus adm-bus-orderdocs-docstatus-shippingallowed"><?php echo Loc::getMessage('SALE_OANALYSIS_SHIPMENT_ALLOWED'); ?> </span> <?php } ?> <a href="/bitrix/admin/sale_order_shipment_edit.php?order_id=<?php echo $orderId; ?> &shipment_id=<?php echo $documentId; ?> " class="adm-bus-orderdocs-threelist-block-title-link<?php echo $document->isCanceled() ? 'adm-bus-orderdocs-threelist-block-title-link-canceled' : ''; ?> "> <?php echo Loc::getMessage('SALE_OANALYSIS_SHIPMENT_TITLE', array('#SHIPMENT_ID#' => $documentId, '#ORDER_ID#' => $orderId)); ?> </a> <?php } ?> </div> <?php self::renderBottomBlocks($document->getField($isPayment ? 'DATE_BILL' : 'DATE_INSERT'), $document->getField('RESPONSIBLE_ID')); ?> </div> <div class="clb"></div> </div> <?php } ?> </div> </div> </div> <?php $result = ob_get_contents(); ob_end_clean(); return $result; }
$defaultBlocksOrder = array("statusorder", "buyer", "delivery", "payment", "additional", "basket"); $fastNavItems = array(); foreach ($defaultBlocksOrder as $item) { $fastNavItems[$item] = Loc::getMessage("SALE_BLOCK_TITLE_" . toUpper($item)); } // errors if (!$result->isSuccess() && !$isNeedFieldsRestore) { $message = ""; foreach ($result->getErrors() as $error) { $message .= $error->getMessage() . "<br>\n"; } CAdminMessage::ShowMessage(array("TYPE" => "ERROR", "MESSAGE" => $message, "HTML" => true)); } $formId = "sale_order_edit"; $basketPrefix = "sale_order_basket"; $orderBasket = new Blocks\OrderBasket($order, "BX.Sale.Admin.OrderBasketObj", $basketPrefix); echo OrderEdit::getScripts($order, $formId); echo Blocks\OrderInfo::getScripts(); echo Blocks\OrderBuyer::getScripts(); echo Blocks\OrderPayment::getScripts(); echo Blocks\OrderAdditional::getScripts(); echo Blocks\OrderStatus::getScripts($order, $USER->GetID()); echo Blocks\OrderFinanceInfo::getScripts(); echo Blocks\OrderShipment::getScripts(); echo $orderBasket->getScripts(); // navigation echo OrderEdit::getFastNavigationHtml($fastNavItems); // yellow block with brief echo Blocks\OrderInfo::getView($order, $orderBasket); // Problem block if ($order->getField("MARKED") == "Y") {
/** * @param array $discounts * @return array|null * @throws Main\LoaderException */ public function prepareData(array $inParams = array()) { if ($this->data === null) { $result = array("ITEMS" => array(), "WEIGHT" => 0); $basket = $this->order->getBasket(); if (empty($inParams["DISCOUNTS"])) { $inParams["DISCOUNTS"] = OrderEdit::getDiscountsApplyResult($this->order, true); } $basketDiscount = 0; $basketPrice = 0; $basketPriceBase = 0; if (!$basket) { $result["WEIGHT_FOR_HUMAN"] = roundEx(floatval(0), SALE_WEIGHT_PRECISION); $this->data = $result; return $result; } $result["WEIGHT"] = $basket->getWeight(); $result["WEIGHT_FOR_HUMAN"] = roundEx(floatval($result["WEIGHT"] / $this->weightKoef), SALE_WEIGHT_PRECISION); $items = $basket->getBasketItems(); /** @var \Bitrix\Sale\BasketItem $item */ if (self::$catalogIncluded === null) { self::$catalogIncluded = Main\Loader::includeModule('catalog'); } foreach ($items as $item) { $productId = $item->getProductId(); $params = array(); if ($item->getField("MODULE") == "catalog") { $params = static::getProductDetails($productId, $item->getQuantity(), $this->order->getUserId(), $this->order->getSiteId(), $this->visibleColumns); } elseif (strval($item->getField("MEASURE_CODE")) != '' && self::$catalogIncluded) { $measures = OrderBasket::getCatalogMeasures(); if (isset($measures[$item->getField("MEASURE_CODE")]) && strlen($measures[$item->getField("MEASURE_CODE")]) > 0) { $params["MEASURE_TEXT"] = $measures[$item->getField("MEASURE_CODE")]; } if (strval($params["MEASURE_TEXT"]) == '') { $defaultMeasure = static::getDefaultMeasures(); $params["MEASURE_TEXT"] = $defaultMeasure["SYMBOL_RUS"] != '' ? $defaultMeasure["SYMBOL_RUS"] : $defaultMeasure["SYMBOL_INTL"]; } } if (!isset($params["OFFER_ID"])) { $params["OFFER_ID"] = $productId; } $params["BASKET_CODE"] = $basketCode = $item->getBasketCode(); $params["PRODUCT_PROVIDER_CLASS"] = $item->getProvider(); $id = $params["PRODUCT_ID"]; $params = array_merge($params, $item->getFieldValues(), array("PRODUCT_ID" => $id)); $params["PROPS"] = array(); /** @var \Bitrix\Sale\BasketPropertyItem $property */ foreach ($item->getPropertyCollection() as $property) { $params["PROPS"][] = array("VALUE" => $property->getField("VALUE"), "NAME" => $property->getField("NAME"), "CODE" => $property->getField("CODE"), "SORT" => $property->getField("SORT")); } if (isset($inParams["DISCOUNTS"]["RESULT"]["BASKET"][$basketCode]) && is_array($inParams["DISCOUNTS"]["RESULT"]["BASKET"][$basketCode])) { foreach ($inParams["DISCOUNTS"]["RESULT"]["BASKET"][$basketCode] as $discount) { $params["DISCOUNTS"][$discount["DISCOUNT_ID"]] = $discount; } } if (isset($inParams["DISCOUNTS"]["PRICES"]["BASKET"][$basketCode])) { $params["PRICE_BASE"] = roundEx($inParams["DISCOUNTS"]["PRICES"]["BASKET"][$basketCode]["BASE_PRICE"], SALE_VALUE_PRECISION); $params["PRICE"] = roundEx($inParams["DISCOUNTS"]["PRICES"]["BASKET"][$basketCode]["PRICE"], SALE_VALUE_PRECISION); $basketPriceBase += $params["PRICE_BASE"] * $params["QUANTITY"]; $basketPrice += $params["PRICE"] * $params["QUANTITY"]; if (!$item->isCustomPrice()) { $basketDiscount += $inParams["DISCOUNTS"]["PRICES"]["BASKET"][$basketCode]["DISCOUNT"] * $params["QUANTITY"]; } } else { // TODO: for old orders } $params["CUSTOM_PRICE"] = $item->isCustomPrice() ? "Y" : "N"; //Let's cache provider product data into form field if (Provider::isExistsTrustData($this->order->getSiteId(), 'sale', $item->getProductId())) { $providerData = Provider::getTrustData($this->order->getSiteId(), 'sale', $item->getProductId()); if (is_array($providerData) && !empty($providerData)) { $params["PROVIDER_DATA"] = serialize($providerData); } } if (is_array($params["SET_ITEMS"]) && !empty($params["SET_ITEMS"])) { $params["SET_ITEMS_DATA"] = serialize($params["SET_ITEMS"]); } $result["ITEMS"][$basketCode] = $params; } $result["BASKET_PRICE_BASE"] = roundEx($basketPriceBase, SALE_VALUE_PRECISION); $result["BASKET_PRICE"] = roundEx($basketPrice, SALE_VALUE_PRECISION); $result["DISCOUNT_VALUE"] = roundEx($basketDiscount, SALE_VALUE_PRECISION); $result["ITEMS_ORDER"] = array_keys($result["ITEMS"]); if (!isset($inParams["SKIP_SKU_INFO"]) || $inParams["SKIP_SKU_INFO"] != true) { $result = static::getOffersSkuParams($result); } $this->data = $result; } return $this->data; }
$aMenu = array(); $aMenu[] = array("ICON" => "btn_list", "TEXT" => Loc::getMessage("SALE_OK_LIST"), "TITLE" => Loc::getMessage("SALE_OK_LIST_TITLE"), "LINK" => "/bitrix/admin/sale_order.php?lang=" . LANGUAGE_ID . GetFilterParams("filter_")); $context = new CAdminContextMenu($aMenu); $context->Show(); if (!$result->isSuccess() && !$needFieldsRestore) { $errorMessage = ""; foreach ($result->getErrors() as $error) { $errorMessage .= $error->getMessage() . "<br>\n"; } CAdminMessage::ShowMessage($errorMessage); } //prepare blocks order $defaultBlocksOrder = array("basket", "buyer", "financeinfo", "delivery", "payment", "relprops", "additional", "statusorder"); $formId = "sale_order_create"; $basketPrefix = "sale_order_basket"; $orderBasket = new Blocks\OrderBasket($order, "BX.Sale.Admin.OrderBasketObj", $basketPrefix); echo OrderEdit::getScripts($order, $formId); echo Blocks\OrderBuyer::getScripts(); echo Blocks\OrderAdditional::getScripts(); echo Blocks\OrderPayment::getScripts(); echo Blocks\OrderShipment::getScripts(); echo Blocks\OrderFinanceInfo::getScripts(); echo $orderBasket->getScripts(); $fastNavItems = array(); foreach ($defaultBlocksOrder as $item) { $fastNavItems[$item] = Loc::getMessage("SALE_OK_BLOCK_TITLE_" . toUpper($item)); } echo OrderEdit::getFastNavigationHtml($fastNavItems); $aTabs = array(array("DIV" => "tab_order", "TAB" => Loc::getMessage("SALE_OK_TAB_ORDER"), "SHOW_WRAP" => "N", "IS_DRAGGABLE" => "Y")); ?> <form method="POST" action="<?php
public static function getTotalPrices(Order $order, OrderBasket $orderBasket, $needRecalculate = true) { $result = array('PRICE_TOTAL' => $order->getPrice(), 'TAX_VALUE' => $order->getTaxValue(), 'PRICE_DELIVERY_DISCOUNTED' => $order->getDeliveryPrice(), 'SUM_PAID' => $order->getSumPaid()); $result["SUM_UNPAID"] = $result["PRICE_TOTAL"] - $result["SUM_PAID"]; if (!$result["PRICE_DELIVERY_DISCOUNTED"]) { $result["PRICE_DELIVERY_DISCOUNTED"] = 0; } if (!$result["TAX_VALUE"]) { $result["TAX_VALUE"] = 0; } $orderDiscount = $order->getDiscount(); if ($orderDiscount) { $discountsList = self::getDiscountsApplyResult($order, $needRecalculate); } else { $discountsList = array(); } if (isset($discountsList["PRICES"]["DELIVERY"]["DISCOUNT"])) { $result['DELIVERY_DISCOUNT'] = $discountsList["PRICES"]["DELIVERY"]["DISCOUNT"]; } else { $result['DELIVERY_DISCOUNT'] = 0; } $result['PRICE_DELIVERY'] = $result['PRICE_DELIVERY_DISCOUNTED'] + $result['DELIVERY_DISCOUNT']; $basketData = $orderBasket->prepareData(array("DISCOUNTS" => $discountsList)); $result["PRICE_BASKET_DISCOUNTED"] = $basketData["BASKET_PRICE"]; $result["PRICE_BASKET"] = $basketData["BASKET_PRICE_BASE"]; return $result; }
/** * @param \Bitrix\Sale\ShipmentItemCollection $shipmentItemCollection * @return array * @throws \Bitrix\Main\LoaderException */ public function getProductsInfo($shipmentItemCollection) { /** @var \Bitrix\Sale\Shipment $shipment */ $shipment = $shipmentItemCollection->getShipment(); $systemShipmentItemCollection = null; $result = array("ITEMS" => array()); /** @var \Bitrix\Sale\ShipmentItemCollection $shipmentItemCollection */ $isSystemShipment = $shipment->isSystem(); if (!$isSystemShipment) { $systemShipment = $shipment->getCollection()->getSystemShipment(); $systemShipmentItemCollection = $systemShipment->getShipmentItemCollection(); } $items = array(); /** @var \Bitrix\Sale\ShipmentItem $item */ foreach ($shipmentItemCollection as $item) { $params = array(); $basketItem = $item->getBasketItem(); if (!$basketItem) { continue; } if ($systemShipmentItemCollection) { /** @var \Bitrix\Sale\ShipmentItemCollection $systemShipmentItemCollection */ $systemShipmentItem = $systemShipmentItemCollection->getItemByBasketCode($basketItem->getBasketCode()); } $productId = $basketItem->getProductId(); if ($basketItem->getField("MODULE") == "catalog") { $params = self::getProductDetails($productId, $item->getQuantity(), $this->order->getUserId(), $this->order->getSiteId(), $this->visibleColumns); } elseif (strval($basketItem->getField("MEASURE_CODE")) != '' && \Bitrix\Main\Loader::includeModule("catalog")) { $measures = OrderBasket::getCatalogMeasures(); if (isset($measures[$basketItem->getField("MEASURE_CODE")]) && strlen($measures[$basketItem->getField("MEASURE_CODE")]) > 0) { $params["MEASURE_TEXT"] = $measures[$basketItem->getField("MEASURE_CODE")]; } if (strval($params["MEASURE_TEXT"]) == '') { $defaultMeasure = static::getDefaultMeasures(); $params["MEASURE_TEXT"] = $defaultMeasure["SYMBOL_RUS"] != '' ? $defaultMeasure["SYMBOL_RUS"] : $defaultMeasure["SYMBOL_INTL"]; } } if ($basketItem->isBundleParent()) { $params["BASE_ELEMENTS_QUANTITY"] = $basketItem->getBundleBaseQuantity(); } $params["BASKET_ID"] = $basketItem->getId(); $params["PRODUCT_PROVIDER_CLASS"] = $basketItem->getProvider(); $params["NAME"] = $basketItem->getField("NAME"); $params["MODULE"] = $basketItem->getField("MODULE"); $itemStoreCollection = $item->getShipmentItemStoreCollection(); /** @var \Bitrix\Sale\ShipmentItemStore $barcode */ $params['BARCODE_INFO'] = array(); foreach ($itemStoreCollection as $barcode) { $storeId = $barcode->getStoreId(); if (!isset($params['BARCODE_INFO'][$storeId])) { $params['BARCODE_INFO'][$storeId] = array(); } $params['BARCODE_INFO'][$storeId][] = array('ID' => $barcode->getId(), 'BARCODE' => $barcode->getField('BARCODE'), 'QUANTITY' => $barcode->getQuantity()); } $params['ORDER_DELIVERY_BASKET_ID'] = $item->getId(); $systemItemQuantity = $systemShipmentItem ? $systemShipmentItem->getQuantity() : 0; $params["QUANTITY"] = floatval($item->getQuantity() + $systemItemQuantity); $params["AMOUNT"] = floatval($item->getQuantity()); $params["PRICE"] = $basketItem->getPrice(); $params["CURRENCY"] = $basketItem->getCurrency(); $params["PRODUCT_PROVIDER_CLASS"] = $basketItem->getProvider(); $params["PROPS"] = array(); /** @var \Bitrix\Sale\BasketPropertyItem $property */ foreach ($basketItem->getPropertyCollection() as $property) { $params["PROPS"][] = array("VALUE" => $property->getField("VALUE"), "NAME" => $property->getField("NAME"), "CODE" => $property->getField("CODE"), "SORT" => $property->getField("SORT")); } if (\Bitrix\Main\Loader::includeModule("catalog")) { $productInfo = \CCatalogSku::GetProductInfo($productId); $params["OFFERS_IBLOCK_ID"] = $productInfo["OFFER_IBLOCK_ID"]; $params["IBLOCK_ID"] = $productInfo["IBLOCK_ID"]; $params["PRODUCT_ID"] = $productInfo["ID"]; } if ($basketItem->isBundleChild()) { $params["PARENT_BASKET_ID"] = $basketItem->getParentBasketItem()->getId(); } $items[$params['BASKET_ID']] = $params; } foreach ($items as $basketId => $item) { $parentBasketId = $item['PARENT_BASKET_ID']; if ($parentBasketId > 0) { $parent =& $items[$parentBasketId]; if (!$parent) { continue; } foreach ($parent['SET_ITEMS'] as &$setItem) { if ($item['OFFER_ID'] == $setItem['OFFER_ID']) { $setItem['PRODUCT_ID'] = $item['PRODUCT_ID']; $setItem["BASKET_ID"] = $item['BASKET_ID']; $setItem["ORDER_DELIVERY_BASKET_ID"] = $item['ORDER_DELIVERY_BASKET_ID']; $setItem['BARCODE_INFO'] = $item['BARCODE_INFO']; $setItem["AMOUNT"] = floatval($item['AMOUNT']); $setItem["QUANTITY"] = $item["QUANTITY"]; $setItem["PARENT_BASKET_ID"] = $item['PARENT_BASKET_ID']; } } unset($setItem); unset($items[$basketId]); } } $result['ITEMS'] = $items; return $result; }