• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/recurring.php
  • Класс: BitrixSaleRecurring
  • Вызов: Recurring::repeat
static function repeat(Order $order, array $resultList)
{
	$recurringID = intval($order->getField("RECURRING_ID"));

	$basket = $order->getBasket();
	foreach ($resultList as $providerName => $basketList)
	{
		foreach ($basketList as $basketCode => $resultData)
		{
			if ($order->isPaid())
			{
				if (!empty($resultData) && is_array($resultData))
				{
					if (empty($resultData['ORDER_ID']) || intval($resultData['ORDER_ID']) < 0)
						$resultData["ORDER_ID"] = $order->getId();

					$resultData["REMAINING_ATTEMPTS"] = (defined("SALE_PROC_REC_ATTEMPTS") ? SALE_PROC_REC_ATTEMPTS : 3);
					$resultData["SUCCESS_PAYMENT"] = "Y";

					if ($recurringID > 0)
						CSaleRecurring::Update($recurringID, $resultData);
					else
						CSaleRecurring::Add($resultData);
				}
				elseif ($recurringID > 0)
				{
					CSaleRecurring::Delete($recurringID);
				}
			}
			else
			{
				if (!$basketItem = $basket->getItemByBasketCode($basketCode))
				{
					throw new MainObjectNotFoundException('Entity "BasketItem" not found');
				}

				$resRecurring = CSaleRecurring::GetList(
					array(),
					array(
						"USER_ID" => $order->getUserId(),
						"PRODUCT_ID" => $basketItem->getProductId(),
						"MODULE" => $basketItem->getField("MODULE"),
						"ORDER_ID" => $order->getId(),
					)
				);
				while ($recurringData = $resRecurring->Fetch())
				{
					CSaleRecurring::Delete($recurringData["ID"]);
				}
			}
		}
	}
}