Добрый день
Появилась проблема со статусом. Почему-то он не всегда выставляется. Теряется примерно 1 на каждые 3-5 заказов
В заказе используется 2 статуса: FC и NP. Проблема только с NP, второй всегда отрабатывает.
сам заказ создаю так:
Ладно бы всегда такое повторялось, но ведь периодически. И конечно у меня самого этого ни разу не было и как искать причину я не понимаю.
Подскажите куда копать
Заранее благодарен
Появилась проблема со статусом. Почему-то он не всегда выставляется. Теряется примерно 1 на каждые 3-5 заказов
В заказе используется 2 статуса: FC и NP. Проблема только с NP, второй всегда отрабатывает.
сам заказ создаю так:
| Код |
|---|
public function create_order_d7($basket_data, $delivery_data, $order_data, $discount = null, $promo_code = null) {
$this->basketAmount = 0;
global $USER;
if ($USER->IsAuthorized())
{
$user_id = $USER->GetID();
}
else # сюда можно попасть только если пользователь отказался от регистрации
{
$user_id = 49;
}
$siteId = 's2' ;
$currencyCode = Option::get('sale', 'default_currency', 'RUB');
DiscountCouponsManager::init();
$basket = Bitrix\Sale\Basket::create($siteId);
$count = 0;
foreach ($basket_data['ITEMS'] as $item) {
if ($order_data['DELIVERY_ID'] == 1 || $order_data['DELIVERY_ID'] == 10) {
$item['PRICE'] = $item['OFFER']['PRICE_PILULI']['PROPERTY_PRICE_VALUE'];
} else {
$item['PRICE'] = $item['OFFER']['PRICE_1C']['PROPERTY_PRICE_VALUE'];
}
$this->basketAmount += $item['PRICE'] * (int) $item['QUANTITY'];
$productID = $item['OFFER']['ID'];
$basket_item = $basket->createItem("catalog", $productID);
$fieldArray = array(
'QUANTITY' => (int) $item['QUANTITY'],
'CURRENCY' => $currencyCode,
'LID' => $siteId,
'NAME' => (string) $item['ITEM']['NAME'],
'PRICE' => (string) $item['PRICE'],
);
$basket_item->setFields($fieldArray);
$count += (int) $item['QUANTITY'];
}
$order = Order::create($siteId, $user_id);
$order->setPersonTypeId(1); # физ.лицо
$order->setField('CURRENCY', $currencyCode);
if ($discount)
$order->setField('USER_DESCRIPTION', $discount.'% скидки по промокоду '.$promo_code."\r\n"."\r\n".$order_data['COMMENT']);
else
$order->setField('USER_DESCRIPTION', $order_data['COMMENT']); // Устанавливаем поля комментария покупателя
$order->setField('STATUS_ID','NP');
if ($order_data['DELIVERY_ID'] == 1 || $order_data['DELIVERY'] == 10) {
$order->setField('STATUS_ID','FC');
}
$order->setBasket($basket);
$order->save();
#отгрузка
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
Bitrix\Sale\Delivery\Services\Manager::getObjectById($order_data['DELIVERY_ID'])
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();
# вся корзина в одной отгрузке
foreach ($basket as $basketItem)
{
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
}
$this->calculateDelivery($shipmentCollection,$count,$this->basketAmount, $order_data['DELIVERY_ID']);
# оплаты
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
Bitrix\Sale\PaySystem\Manager::getObjectById($order_data['PAYMENT_ID'])
);
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
# Устанавливаем свойства
$propertyCollection = $order->getPropertyCollection();
$phoneProp = $this->getPropertyByCode($propertyCollection, 'PROP_PHONE');///$propertyCollection->getPhone();
$phoneProp->setValue($order_data['PHONE']);
$nameProp = $this->getPropertyByCode($propertyCollection, 'PROP_NAME');
$nameProp->setValue($order_data['NAME']);
$emailProperty = $this->getPropertyByCode($propertyCollection, 'PROP_EMAIL');
$emailProperty->setValue($order_data['EMAIL']);
$adressProperty = $this->getPropertyByCode($propertyCollection, 'PROP_ADDRESS');
$adressProperty->setValue($order_data['ADDRESS']);
$order->doFinalAction(true);
$result = $order->save();
$orderId = $order->GetId();
return $orderId;
}
|
Подскажите куда копать
Заранее благодарен