- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/exchange/importonecpackagecrm.php
- Класс: BitrixSaleExchangeImportOneCPackageCRM
- Вызов: ImportOneCPackageCRM::convert
protected function convert(array $documents)
{
$result = $this->checkDocuments($documents);
if($result->isSuccess())
{
$documentShipment = $this->getDocumentByTypeId(ExchangeOneCDocumentType::SHIPMENT, $documents);
if($documentShipment !== null)
{
$entityTypeId = $this->resolveOwnerEntityTypeId($documentShipment->getTypeId());
$settings = ManagerImport::getSettingsByType($entityTypeId);
$convertor = ExchangeOneCConverterFactory::create($entityTypeId);
$convertor->init(
$settings,
$entityTypeId,
$documentShipment->getTypeId()
);
$fields = $convertor->resolveParams($documentShipment);
$shipmentPrice = $fields['TRAITS']['BASE_PRICE_DELIVERY'];
if($shipmentPrice>0)
{
$documentOrder = $this->getDocumentByTypeId(ExchangeOneCDocumentType::ORDER, $documents);
$fieldsOrder = $documentOrder->getFieldValues();
$items = $this->getProductsItems($fieldsOrder);
if(!$this->deliveryServiceExists($items))
{
$fieldsOrder['ITEMS'][][self::DELIVERY_SERVICE_XMLID] = array(
'ID' => self::DELIVERY_SERVICE_XMLID,
'NAME' => GetMessage('CRM_PACKAGE_DELIVERY_SERVICE_ITEM'),
'PRICE' => $shipmentPrice,
'PRICE_ONE' => $shipmentPrice,
'QUANTITY' => 1,
'TYPE' => ImportBase::ITEM_ITEM,
'MEASURE_CODE' => 796,
'MEASURE_NAME' => GetMessage('CRM_PACKAGE_DELIVERY_SERVICE_ITEM_MEASURE_796'),
);
$documentOrder->setFields($fieldsOrder);
}
}
foreach ($documents as $k=>$document)
{
if($document->getTypeId() == ExchangeOneCDocumentType::SHIPMENT)
{
unset($documents[$k]);
}
}
}
$result = parent::convert($documents);
if($result->isSuccess())
{
$personTypeId = 0;
$paySystemId = 0;
$personTypes = CCrmPaySystem::getPersonTypeIDs();
/** @var ImportBase[] $entityItems */
$entityItems = $result->getData();
foreach ($entityItems as $entityItem)
{
if($entityItem->getOwnerTypeId() == EntityType::USER_PROFILE)
{
/** @var ExchangeEntityUserProfileImport $entityItem */
$personTypeId = $entityItem->isFiz()? (int)$personTypes['CONTACT']:(int)$personTypes['COMPANY'];
break;
}
}
if($personTypeId>0)
{
$billList = CCrmPaySystem::GetPaySystemsListItems($personTypeId);
foreach($billList as $billId => $billName)
{
$paySystemId = $billId;
break;
}
}
if($paySystemId>0)
{
$list = [];
foreach ($entityItems as $entityItem)
{
if(
$entityItem->getOwnerTypeId() == EntityType::INVOICE_PAYMENT_CASH ||
$entityItem->getOwnerTypeId() == EntityType::INVOICE_PAYMENT_CASH_LESS ||
$entityItem->getOwnerTypeId() == EntityType::INVOICE_PAYMENT_CARD_TRANSACTION)
{
$traits = $entityItem->getFieldValues()['TRAITS'];
$traits['PAY_SYSTEM_ID'] = $paySystemId;
$entityItem->setField('TRAITS', $traits);
}
$list[] = $entityItem;
}
$result->setData($list);
}
}
}
return $result;
}