Добрый день
Появилась проблема со статусом. Почему-то он не всегда выставляется. Теряется примерно 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; } |
Подскажите куда копать
Заранее благодарен