• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paymentcollection.php
  • Класс: BitrixSalePaymentCollection
  • Вызов: PaymentCollection::onOrderModify
public function onOrderModify($name, $oldValue, $value)
{
	$result = new Result();

	switch($name)
	{
		case "CANCELED":

			if ($value == "Y")
			{
				$isPaid = false;

				/** @var Payment $payment */
				foreach ($this->collection as $payment)
				{
					if ($payment->isPaid())
					{
						$isPaid = true;
						break;
					}
				}

				if ($isPaid)
				{
					$result->addError(new ResultError(Loc::getMessage('SALE_ORDER_CANCEL_PAYMENT_EXIST_ACTIVE'), 'SALE_ORDER_CANCEL_PAYMENT_EXIST_ACTIVE'));
				}
			}

		break;

		case "PRICE":
			$payment = $this->getItemForAutoEdit($oldValue);
			if ($payment !== null)
			{
				$r = $payment->setField("SUM", $value);
				if (!$r->isSuccess())
				{
					$result->addErrors($r->getErrors());
				}

				$service = $payment->getPaySystem();
				if ($service)
				{
					$price = $service->getPaymentPrice($payment);
					$payment->setField('PRICE_COD', $price);
				}
			}
		break;
	}

	return $result;
}