Esempio n. 1
0
    }
} elseif ($isCopyingOrderOperation) {
    /** @var \Bitrix\Sale\Order $originalOrder */
    $originalOrder = Bitrix\Sale\Order::load($ID);
    if ($originalOrder) {
        $order = \Bitrix\Sale\Order::create($originalOrder->getSiteId(), $originalOrder->getUserId(), $originalOrder->getCurrency());
        $order->setPersonTypeId($originalOrder->getPersonTypeId());
        $originalPropCollection = $originalOrder->getPropertyCollection();
        $properties['PROPERTIES'] = array();
        $files = array();
        /** @var \Bitrix\Sale\PropertyValue $prop */
        foreach ($originalPropCollection as $prop) {
            if ($prop->getField('TYPE') == 'FILE') {
                $propValue = $prop->getValue();
                if ($propValue) {
                    $files[] = CAllFile::MakeFileArray($propValue['ID']);
                    $properties['PROPERTIES'][$prop->getPropertyId()] = $propValue['ID'];
                }
            } else {
                $properties['PROPERTIES'][$prop->getPropertyId()] = $prop->getValue();
            }
        }
        $propCollection = $order->getPropertyCollection();
        $propCollection->setValuesFromPost($properties, $files);
        $originalBasket = $originalOrder->getBasket();
        $originalBasketItems = $originalBasket->getBasketItems();
        $basket = \Bitrix\Sale\Basket::create($originalOrder->getSiteId(), $originalBasket->getFUserId());
        /** @var \Bitrix\Sale\BasketItem $originalBasketItem */
        foreach ($originalBasketItems as $originalBasketItem) {
            $item = $basket->createItem($originalBasketItem->getField("MODULE"), $originalBasketItem->getProductId());
            $item->setFields(array_intersect_key($originalBasketItem->getFields()->getValues(), array_flip($originalBasketItem->getAvailableFields())));