Подскажите как запретить смену статуса при обмене заказа 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