...Человеческий поиск в разработке...
- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/returncustomer/transportbase.php
- Класс: Bitrix\Sender\Integration\Crm\ReturnCustomer\TransportBase
- Вызов: TransportBase::copyOrder
protected function copyOrder($formDealId, $toDealId) { if ($data = $this->getOrderData($formDealId)) { $registry = \Bitrix\Sale\Registry::getInstance( \Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER); $orderClassName = $registry->getOrderClassName(); /** @var Order $order */ $order = $orderClassName::load($data['PAYMENT_ORDER_ID']); if ($order) { /** @var Order $newOrder */ $newOrder = $orderClassName::create($order->getSiteId(), $order->getUserId(), $order->getCurrency()); /** @var Basket $basketClassName */ $basketClassName = $registry->getBasketClassName(); $newBasket = $basketClassName::create($order->getSiteId()); /** @var BasketItem $item */ foreach ($order->getBasket() as $item) { $basketItem = $newBasket->createItem($item->getField('MODULE'), $item->getProductId()); $basketItem->setFields([ 'PRODUCT_PROVIDER_CLASS' => $item->getField('PRODUCT_PROVIDER_CLASS'), 'QUANTITY' => $item->getQuantity(), 'CURRENCY' => $item->getCurrency(), 'BASE_PRICE' => $item->getBasePrice(), 'PRICE' => $item->getPrice(), 'CUSTOM_PRICE' => $item->isCustomPrice() ? 'Y' : 'N', ]); } $newOrder->setBasket($newBasket); /** @var Payment $payment */ $payment = $order->getPaymentCollection()->getItemById($data['PAYMENT_ID']); if ($payment) { $newPayment = $newOrder->getPaymentCollection()->createItem(); $newPayment->setFields([ 'PAY_SYSTEM_ID' => $payment->getPaymentSystemId(), 'PAY_SYSTEM_NAME' => $payment->getPaymentSystemName(), 'PS_RECURRING_TOKEN' => $payment->getField('PS_RECURRING_TOKEN'), 'SUM' => $payment->getSum(), ]); } /** @var \Bitrix\Sale\Shipment $newShipment */ $newShipment = $newOrder->getShipmentCollection()->createItem(); foreach ($newBasket as $item) { $newShipmentItem = $newShipment->getShipmentItemCollection()->createItem($item); $newShipmentItem->setQuantity($item->getQuantity()); } $binding = $newOrder->createEntityBinding(); $binding->setField('OWNER_ID', $toDealId); $binding->setField('OWNER_TYPE_ID', \CCrmOwnerType::Deal); /** @var ContactCompanyEntity $item */ foreach ($order->getContactCompanyCollection()->getCompanies() as $item) { /** @var Company $newCompany */ $newCompany = $newOrder->getContactCompanyCollection()->createCompany(); $newCompany->setField('ENTITY_ID', $item->getField('ENTITY_ID')); $newCompany->setField('IS_PRIMARY', $item->getField('IS_PRIMARY')); } /** @var ContactCompanyEntity $item */ foreach ($order->getContactCompanyCollection()->getContacts() as $item) { /** @var Contact $newContact */ $newContact = $newOrder->getContactCompanyCollection()->createContact(); $newContact->setField('ENTITY_ID', $item->getField('ENTITY_ID')); $newContact->setField('IS_PRIMARY', $item->getField('IS_PRIMARY')); } $newOrder->refreshData(); $newOrder->doFinalAction(); $newOrder->save(); } } }