• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/exchange/onec/importcriterion.php
  • Класс: BitrixSaleExchangeOneCCriterionShipment
  • Вызов: CriterionShipment::equals
public function equals(array $fields)
{
	/** @var SaleShipment $entity */
	$entity = $this->getEntity();
	if(empty($entity))
	{
		return true;
	}

	$bBasketItemsMatch = true;
	$basketItemsIndexList = array();
	$fieldsItemsIndexList = array();
	/** @var ExchangeEntityOrderImport $parentImport */
	$parentImport = $this->entityFactoryCreate($this->getParentTypeId());
	/** @var ExchangeEntityShipmentImport $shipmentImport */
	$shipmentImport = $this->entityFactoryCreate($this->getShipmentTypeId());

	$basketItems = $parentImport::getGroupItemsBasketFields($fields['ITEMS']);
	if(count($basketItems)<=0)
	{
		return true;
	}

	/** @var SaleShipmentCollection $shipmentCollection */
	$shipmentCollection = $entity->getCollection();
	$order = $shipmentCollection->getOrder();
	$basket = $order->getBasket();
	/** @var SaleBasketItem $basketItem */
	foreach ($basket as $basketItem)
	{
		if($entity->isExistBasketItem($basketItem))
		{
			$quantity = $entity->getBasketItemQuantity($basketItem);
			if($quantity>0)
			{
				$basketItemsIndexList[$basketItem->getId()] = $quantity;
			}
		}
	}

	foreach($basketItems as $items)
	{
		foreach($items as $productXML_ID => $item)
		{
			if($basketItem = $parentImport::getBasketItemByItem($basket, $item))
			{
				$fieldsItemsIndexList[$basketItem->getId()] = $item['QUANTITY'];
			}
		}
	}

	if(count($basketItemsIndexList)<>count($fieldsItemsIndexList))
	{
		$bBasketItemsMatch = false;
	}
	else
	{
		foreach ($basketItemsIndexList as $basketId=>$quantity)
		{
			if(isset($fieldsItemsIndexList[$basketId]) && $fieldsItemsIndexList[$basketId] == $quantity)
				unset($fieldsItemsIndexList[$basketId]);
		}

		if(count($fieldsItemsIndexList)>0)
			$bBasketItemsMatch = false;
	}

	$itemDeliveryService = $shipmentImport::getFieldsDeliveryService($fields);

	if($bBasketItemsMatch &&
		($entity->isShipped()? $fields['DEDUCTED']=='Y':true) &&
		$entity->getPrice() == $itemDeliveryService['PRICE']
	)
	{
		return false;
	}
	else
	{
		return true;
	}
}