yous
@yous

Bitrix — запрет на смену статуса Ожидает оплату?

Подскажите как запретить смену статуса при обмене заказа 1С и БУС.
настроен стандартный обмен, для оплыты на сайте 1С передает статус Ожидает оплату PA, после клиент оплачивает заказ, и через время 1С опять обновляет уже оплаченный заказ в статус Ожидает оплату PA.

на стороне сайта сделали костыль для запрета смены статуса, но он работает только через панель БУС. может событие не то которым обменивается 1С и БУС?

class Order 
{
  public static function OnSaleOrderBeforeSaved(\Bitrix\Main\Event $event)
  	{
    /** @var \Bitrix\Sale\Order $order */
    $order = $event->getParameter("ENTITY");

    /** @var \Bitrix\Sale\Order $STATUS_ID */
    $CANCELED = $order->getField("CANCELED");

    /** @var \Bitrix\Sale\Order $STATUS_ID */
    $STATUS_ID = $order->getField("STATUS_ID");

    /**  @var \Bitrix\Main\Event $oldValues */
    $oldValues = $event->getParameter("VALUES");

    /**  @var $paymentCollection \Bitrix\Sale\PaymentCollection */
    $paymentCollection = $order->getPaymentCollection();

    $isPaid = $paymentCollection->isPaid();

    if($STATUS_ID === 'PA' && $isPaid === true) {

      $order->setField('STATUS_ID', $oldValues['STATUS_ID']);

      $error = new \Bitrix\Main\Error("Заказ уже оплачен.");
			$resultError = \Bitrix\Sale\ResultError::create($error);

			return $event->addResult(
				new \Bitrix\Main\EventResult(
					\Bitrix\Main\EventResult::ERROR, $resultError, 'sale'
				)
			);
    }
	}
}


такой метод работает, только если вручную менять статус в битриксе, тогда статус с PQ на PA нельзя сменить будет ошибка и статус остается в PQ.

статус PA сортировка 1000
статус PQ сортировка 1030
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Andryjka
Веб-программист
Может сначала посмотреть настройки обмена с 1С в Битриксе? Похоже на настройку: Статус, в который переводить заказ при получении отгрузки от "1С:Предприятие

Магазин -> Настройки -> Интеграция с 1С -> Заказы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы