/** * @return Entity\AddResult|Entity\UpdateResult|Result|mixed * @throws Main\ArgumentOutOfRangeException */ public function save() { global $USER, $CACHE_MANAGER; $result = new Result(); $id = $this->getId(); $this->isNew = $id == 0; if ($this->isNew) { $fields = $this->fields->getChangedValues(); if (empty($fields['STATUS_ID'])) { /** @var Result $r */ $r = $this->setField("STATUS_ID", OrderStatus::getInitialStatus()); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } } } /** @var array $oldEntityValues */ $oldEntityValues = $this->fields->getOriginalValues(); /** @var Main\Entity\Event $event */ $event = new Main\Event('sale', EventActions::EVENT_ON_ORDER_BEFORE_SAVED, array('ENTITY' => $this, 'VALUES' => $oldEntityValues)); $event->send(); if ($event->getResults()) { /** @var Main\EventResult $eventResult */ foreach ($event->getResults() as $eventResult) { if ($eventResult->getType() == Main\EventResult::ERROR) { $errorMsg = new ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR'), 'SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR'); if ($eventResultData = $eventResult->getParameters()) { if (isset($eventResultData) && $eventResultData instanceof ResultError) { /** @var ResultError $errorMsg */ $errorMsg = $eventResultData; } } $result->addError($errorMsg); } } } if (!$result->isSuccess()) { return $result; } $r = $this->verify(); if (!$r->isSuccess()) { $oldErrorText = $this->getField('REASON_MARKED'); /** @var ResultError $error */ foreach ($r->getErrors() as $error) { if ($error instanceof ResultNotice) { continue; } elseif ($error instanceof ResultWarning) { $oldErrorText .= (strval($oldErrorText) != '' ? "\n" : "") . $error->getMessage(); continue; } else { $result->addError($error); } } if (strval(trim($oldErrorText)) != '') { $this->setField('MARKED', "Y"); $this->setField('REASON_MARKED', $oldErrorText); } if (!$result->isSuccess()) { return $result; } } $r = Provider::onOrderSave($this); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); return $result; } $fields = $this->fields->getValues(); if ($id > 0) { $fields = $this->fields->getChangedValues(); $isChanged = (bool) (!empty($fields)); if ($this->isChanged()) { if (!isset($fields['DATE_UPDATE']) || strval($fields['DATE_UPDATE']) == '') { $fields['DATE_UPDATE'] = new Type\DateTime(); $this->setFieldNoDemand('DATE_UPDATE', $fields['DATE_UPDATE']); } $fields['VERSION'] = intval($this->getField('VERSION')) + 1; $this->setFieldNoDemand('VERSION', $fields['VERSION']); if (array_key_exists('REASON_MARKED', $fields) && strlen($fields['REASON_MARKED']) > 255) { $fields['REASON_MARKED'] = substr($fields['REASON_MARKED'], 0, 255); } } if (!empty($fields) && is_array($fields)) { $r = Internals\OrderTable::update($id, $fields); if (!$r->isSuccess()) { OrderHistory::addAction('ORDER', $id, 'ORDER_UPDATE_ERROR', $id, $this, array("ERROR" => $r->getErrorMessages())); $result->addWarnings($r->getErrors()); return $result; } if ($resultData = $r->getData()) { $result->setData($resultData); } OrderHistory::addAction('ORDER', $id, 'ORDER_UPDATED', $id, $this); } } else { $isChanged = true; if (!isset($fields['DATE_INSERT']) || strval($fields['DATE_INSERT']) == '') { $fields['DATE_INSERT'] = new Type\DateTime(); $this->setFieldNoDemand('DATE_INSERT', $fields['DATE_INSERT']); } if (!isset($fields['DATE_UPDATE']) || strval($fields['DATE_UPDATE']) == '') { $fields['DATE_UPDATE'] = new Type\DateTime(); $this->setFieldNoDemand('DATE_UPDATE', $fields['DATE_UPDATE']); } if ($USER->isAuthorized()) { $fields['CREATED_BY'] = $USER->getID(); $this->setFieldNoDemand('CREATED_BY', $fields['CREATED_BY']); } if (!isset($fields['STATUS_ID']) || strval($fields['STATUS_ID']) == '') { $orderStatus = OrderStatus::getInitialStatus(); if (!empty($orderStatus) && !is_array($orderStatus)) { $fields['STATUS_ID'] = $orderStatus; $this->setFieldNoDemand('STATUS_ID', $fields['STATUS_ID']); } } if (isset($fields['STATUS_ID']) && strval($fields['STATUS_ID']) != '') { if (!isset($fields['DATE_STATUS']) || strval($fields['DATE_STATUS']) == '') { $fields['DATE_STATUS'] = new Type\DateTime(); $this->setFieldNoDemand('DATE_STATUS', $fields['DATE_STATUS']); } if ((!isset($fields['EMP_STATUS_ID']) || (int) $fields['EMP_STATUS_ID'] <= 0) && $USER->isAuthorized()) { $fields['EMP_STATUS_ID'] = $USER->getID(); $this->setFieldNoDemand('EMP_STATUS_ID', $fields['EMP_STATUS_ID']); } } if (array_key_exists('REASON_MARKED', $fields) && strlen($fields['REASON_MARKED']) > 255) { $fields['REASON_MARKED'] = substr($fields['REASON_MARKED'], 0, 255); } $r = Internals\OrderTable::add($fields); if (!$r->isSuccess()) { $result->addWarnings($r->getErrors()); return $result; } if ($resultData = $r->getData()) { $result->setData($resultData); } $id = $r->getId(); $this->setFieldNoDemand('ID', $id); /** @var Result $r */ $r = static::setAccountNumber($id); if ($r->isSuccess()) { if ($accountData = $r->getData()) { if (array_key_exists('ACCOUNT_NUMBER', $accountData)) { $this->setField('ACCOUNT_NUMBER', $accountData['ACCOUNT_NUMBER']); } } } OrderHistory::addAction('ORDER', $id, 'ORDER_ADDED', $id, $this); } if ($id > 0) { $result->setId($id); } if ($eventName = static::getEntityEventName()) { $oldEntityValues = $this->fields->getOriginalValues(); if (!empty($oldEntityValues)) { /** @var Main\Event $event */ $event = new Main\Event('sale', 'On' . $eventName . 'EntitySaved', array('ENTITY' => $this, 'VALUES' => $oldEntityValues)); $event->send(); } } $changeMeaningfulFields = array("PERSON_TYPE_ID", "CANCELED", "STATUS_ID", "MARKED", "PRICE", "SUM_PAID", "USER_ID", "EXTERNAL_ORDER"); if ($isChanged) { $logFields = array(); if (!$this->isNew) { $fields = $this->getFields(); $originalValues = $fields->getOriginalValues(); foreach ($originalValues as $originalFieldName => $originalFieldValue) { if (in_array($originalFieldName, $changeMeaningfulFields) && $this->getField($originalFieldName) != $originalFieldValue) { $logFields[$originalFieldName] = $this->getField($originalFieldName); $logFields['OLD_' . $originalFieldName] = $originalFieldValue; } } OrderHistory::addLog('ORDER', $id, "ORDER_UPDATE", $id, $this, $logFields, OrderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1); } } OrderHistory::collectEntityFields('ORDER', $id, $id); /** @var Basket $basket */ $basket = $this->getBasket(); /** @var Result $r */ $r = $basket->save(); if (!$r->isSuccess()) { $result->addWarnings($r->getErrors()); } /** @var PaymentCollection $paymentCollection */ $paymentCollection = $this->getPaymentCollection(); /** @var Result $r */ $r = $paymentCollection->save(); if (!$r->isSuccess()) { $result->addWarnings($r->getErrors()); } // user budget Internals\UserBudgetPool::onUserBudgetSave($this->getUserId()); /** @var ShipmentCollection $shipmentCollection */ $shipmentCollection = $this->getShipmentCollection(); /** @var Result $r */ $r = $shipmentCollection->save(); if (!$r->isSuccess()) { $result->addWarnings($r->getErrors()); } /** @var Tax $tax */ $tax = $this->getTax(); /** @var Result $r */ $r = $tax->save(); if (!$r->isSuccess()) { $result->addWarnings($r->getErrors()); } /** @var PropertyValueCollection $propertyCollection */ $propertyCollection = $this->getPropertyCollection(); /** @var Result $r */ $r = $propertyCollection->save(); if (!$r->isSuccess()) { $result->addWarnings($r->getErrors()); } /** @var Discount $discount */ $discount = $this->getDiscount(); /** @var Result $r */ $r = $discount->save(); if (!$r->isSuccess()) { $result->addWarnings($r->getErrors()); } /** @var array $oldEntityValues */ $oldEntityValues = $this->fields->getOriginalValues(); OrderHistory::addLog('ORDER', $this->getId(), 'ORDER_EVENT_ON_ORDER_SAVED', null, null, array(), OrderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1); $event = new Main\Event('sale', EventActions::EVENT_ON_ORDER_SAVED, array('ENTITY' => $this, 'IS_NEW' => $this->isNew, 'VALUES' => $oldEntityValues)); $event->send(); if (($eventList = Internals\EventsPool::getEvents($this)) && !empty($eventList) && is_array($eventList)) { foreach ($eventList as $eventName => $eventData) { $event = new Main\Event('sale', $eventName, $eventData); $event->send(); Notify::callNotify($this, $eventName); } Internals\EventsPool::resetEvents($this); } Notify::callNotify($this, EventActions::EVENT_ON_ORDER_SAVED); if (!$result->isSuccess()) { $errorMsg = $this->getField('REASON_MARKED'); $errorMsg .= (strval($errorMsg) != "" ? "\n" : "") . join("\n", $result->getErrors()); $updateFields = array('MARKED' => 'Y', 'DATE_MARKED' => new Type\DateTime(), 'EMP_MARKED_ID' => $USER->getId(), 'REASON_MARKED' => $errorMsg); Internals\OrderTable::update($id, $updateFields); OrderHistory::addLog('ORDER', $this->getId(), 'ORDER_EVENT_ON_ORDER_SAVED_ERROR', null, null, array("ERROR" => $errorMsg), OrderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1); } else { if (defined("CACHED_b_sale_order") && ($this->isNew || $this->isChanged() && $fields["UPDATED_1C"] != "Y")) { $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders"); $CACHE_MANAGER->SetImmediate("sale_orders", true); } } OrderHistory::collectEntityFields('ORDER', $id, $id); $this->fields->clearChanged(); $this->isNew = false; return $result; }
/** * @return Entity\AddResult|Entity\UpdateResult|Result|mixed * @throws Main\ArgumentOutOfRangeException */ public function save() { global $USER; $result = new Result(); $id = $this->getId(); $this->isNew = $id == 0; /** @var array $oldEntityValues */ $oldEntityValues = $this->fields->getOriginalValues(); /** @var Main\Entity\Event $event */ $event = new Main\Event('sale', EventActions::EVENT_ON_ORDER_BEFORE_SAVED, array('ENTITY' => $this, 'VALUES' => $oldEntityValues)); $event->send(); if ($event->getResults()) { $result = new Result(); /** @var Main\EventResult $eventResult */ foreach ($event->getResults() as $eventResult) { if ($eventResult->getType() == Main\EventResult::ERROR) { $errorMsg = new ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR'), 'SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR'); if ($eventResultData = $eventResult->getParameters()) { if (isset($eventResultData['ERROR']) && $eventResultData['ERROR'] instanceof ResultError) { $errorMsg = $eventResultData['ERROR']; } } $result->addError($errorMsg); } } if (!$result->isSuccess()) { return $result; } } $r = Provider::onOrderSave($this); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); return $result; } $fields = $this->fields->getValues(); if ($id > 0) { $fields = $this->fields->getChangedValues(); if ($this->isChanged()) { $fields['DATE_UPDATE'] = new Type\DateTime(); $this->setFieldNoDemand('DATE_UPDATE', $fields['DATE_UPDATE']); $fields['VERSION'] = intval($this->getField('VERSION')) + 1; $this->setFieldNoDemand('VERSION', $fields['VERSION']); $fields['UPDATED_1C'] = 'N'; $this->setFieldNoDemand('UPDATED_1C', $fields['UPDATED_1C']); } if (!empty($fields) && is_array($fields)) { $result = Internals\OrderTable::update($id, $fields); if (!$result->isSuccess()) { return $result; } } else { $result = new Entity\UpdateResult(); } } else { $fields['DATE_UPDATE'] = $fields['DATE_INSERT'] = new Type\DateTime(); $this->setFieldNoDemand('DATE_INSERT', $fields['DATE_INSERT']); $this->setFieldNoDemand('DATE_UPDATE', $fields['DATE_UPDATE']); if ($USER->isAuthorized()) { $fields['CREATED_BY'] = $USER->getID(); $this->setFieldNoDemand('CREATED_BY', $fields['CREATED_BY']); } if (!isset($fields['STATUS_ID']) || strval($fields['STATUS_ID']) == '') { $orderStatus = OrderStatus::getInitialStatus(); if (!empty($orderStatus) && !is_array($orderStatus)) { $fields['STATUS_ID'] = $orderStatus; $this->setFieldNoDemand('STATUS_ID', $fields['STATUS_ID']); } } if (isset($fields['STATUS_ID']) && strval($fields['STATUS_ID']) != '') { if (!isset($fields['DATE_STATUS']) || strval($fields['DATE_STATUS']) == '') { $fields['DATE_STATUS'] = new Type\DateTime(); $this->setFieldNoDemand('DATE_STATUS', $fields['DATE_STATUS']); } if ((!isset($fields['EMP_STATUS_ID']) || (int) $fields['EMP_STATUS_ID'] <= 0) && $USER->isAuthorized()) { $fields['EMP_STATUS_ID'] = $USER->getID(); $this->setFieldNoDemand('EMP_STATUS_ID', $fields['EMP_STATUS_ID']); } } $result = Internals\OrderTable::add($fields); if (!$result->isSuccess()) { return $result; } $id = $result->getId(); $this->setFieldNoDemand('ID', $id); /** @var Result $r */ $r = static::setAccountNumber($id); if ($r->isSuccess()) { if ($accountData = $r->getData()) { if (array_key_exists('ACCOUNT_NUMBER', $accountData)) { $this->setField('ACCOUNT_NUMBER', $accountData['ACCOUNT_NUMBER']); } } } OrderHistory::addAction('ORDER', $id, 'ORDER_ADDED', $id, $this); } if ($eventName = static::getEntityEventName()) { $oldEntityValues = $this->fields->getOriginalValues(); if (!empty($oldEntityValues)) { /** @var Main\Event $event */ $event = new Main\Event('sale', 'On' . $eventName . 'EntitySaved', array('ENTITY' => $this, 'VALUES' => $oldEntityValues)); $event->send(); } } OrderHistory::collectEntityFields('ORDER', $id, $id); $this->fields->clearChanged(); /** @var Basket $basket */ $basket = $this->getBasket(); /** @var Result $r */ $r = $basket->save(); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } /** @var PaymentCollection $paymentCollection */ $paymentCollection = $this->getPaymentCollection(); /** @var Result $r */ $r = $paymentCollection->save(); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } // user budget Internals\UserBudgetPool::onUserBudgetSave($this->getUserId()); /** @var ShipmentCollection $shipmentCollection */ $shipmentCollection = $this->getShipmentCollection(); /** @var Result $r */ $r = $shipmentCollection->save(); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } /** @var Tax $tax */ $tax = $this->getTax(); /** @var Result $r */ $r = $tax->save(); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } /** @var PropertyValueCollection $propertyCollection */ $propertyCollection = $this->getPropertyCollection(); /** @var Result $r */ $r = $propertyCollection->save(); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } /** @var Discount $discount */ $discount = $this->getDiscount(); /** @var Result $r */ $r = $discount->save(); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } /** @var array $oldEntityValues */ $oldEntityValues = $this->fields->getOriginalValues(); $event = new Main\Event('sale', EventActions::EVENT_ON_ORDER_SAVED, array('ENTITY' => $this, 'IS_NEW' => $this->isNew, 'VALUES' => $oldEntityValues)); $event->send(); if (($eventList = Internals\EventsPool::getEvents($this)) && !empty($eventList) && is_array($eventList)) { foreach ($eventList as $eventName => $eventData) { $event = new Main\Event('sale', $eventName, $eventData); $event->send(); } Internals\EventsPool::resetEvents($this); } $this->isNew = false; return $result; }
protected function saveStatusAction() { if (!isset($this->request['orderId']) || intval($this->request['orderId']) <= 0) { throw new SystemException("Wrong order id!"); } if (!isset($this->request['statusId']) || strlen($this->request['statusId']) <= 0) { throw new SystemException("Wrong status id!"); } /** @var \Bitrix\Sale\Order $order */ $order = \Bitrix\Sale\Order::load($this->request['orderId']); if (!$order) { throw new UserMessageException("Can't load order with id: \"" . $this->request['orderId'] . "\""); } $statusesList = \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($this->userId, \Bitrix\Sale\OrderStatus::getInitialStatus()); if (array_key_exists($this->request['statusId'], $statusesList)) { $res = $order->setField("STATUS_ID", $this->request['statusId']); if (!$res->isSuccess()) { throw new UserMessageException(implode("<br>\n", $res->getErrorMessages())); } $res = $order->save(); if (!$res->isSuccess()) { throw new UserMessageException(implode("<br>\n", $res->getErrorMessages())); } } }
/** * Modify order field. * * @param string $name Field name. * @param mixed|string|int|float $oldValue Old value. * @param mixed|string|int|float $value New value. * @return Entity\Result|Result * @throws Main\ArgumentNullException * @throws Main\ArgumentOutOfRangeException * @throws Main\NotImplementedException * @throws Main\ObjectNotFoundException */ protected function onFieldModify($name, $oldValue, $value) { global $USER; if ($name == "PRICE") { /** @var Result $r */ $r = $this->refreshVat(); if (!$r->isSuccess()) { return $r; } /** @var ShipmentCollection $shipmentCollection */ if (!($shipmentCollection = $this->getShipmentCollection())) { throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found'); } $result = $shipmentCollection->onOrderModify($name, $oldValue, $value); if (!$result->isSuccess()) { return $result; } /** @var PaymentCollection $paymentCollection */ if (!($paymentCollection = $this->getPaymentCollection())) { throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found'); } $result = $paymentCollection->onOrderModify($name, $oldValue, $value); if (!$result->isSuccess()) { return $result; } return $result; } elseif ($name == "CURRENCY") { throw new Main\NotImplementedException('field CURRENCY'); } elseif ($name == "PERSON_TYPE_ID") { // may be need activate properties //throw new Main\NotImplementedException(); } elseif ($name == "CANCELED") { $event = new Main\Event('sale', EventActions::EVENT_ON_BEFORE_ORDER_CANCELED, array($this)); $event->send(); /** @var PaymentCollection $paymentCollection */ if (!($paymentCollection = $this->getPaymentCollection())) { throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found'); } $result = $paymentCollection->onOrderModify($name, $oldValue, $value); if (!$result->isSuccess()) { return $result; } /** @var ShipmentCollection $shipmentCollection */ if (!($shipmentCollection = $this->getShipmentCollection())) { throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found'); } $result = $shipmentCollection->onOrderModify($name, $oldValue, $value); if (!$result->isSuccess()) { return $result; } $this->setField('DATE_CANCELED', new Type\DateTime()); if ($USER->isAuthorized()) { $this->setField('EMP_CANCELED_ID', $USER->getID()); } Internals\EventsPool::addEvent($this, EventActions::EVENT_ON_ORDER_CANCELED, array($this, $this->isCanceled())); Internals\EventsPool::addEvent($this, EventActions::EVENT_ON_ORDER_CANCELED_SEND_MAIL, array($this, $this->isPaid())); } elseif ($name == "USER_ID") { throw new Main\NotImplementedException('field USER_ID'); } elseif ($name == "MARKED") { if ($oldValue != "Y") { $this->setField('DATE_MARKED', new Type\DateTime()); if ($USER->isAuthorized()) { $this->setField('EMP_MARKED_ID', $USER->getID()); } } elseif ($value == "N") { $this->setField('REASON_MARKED', ''); } /** @var ShipmentCollection $shipmentCollection */ if (!($shipmentCollection = $this->getShipmentCollection())) { throw new Main\ObjectNotFoundException('Entity "ShipmentCollection" not found'); } $result = $shipmentCollection->onOrderModify($name, $oldValue, $value); if (!$result->isSuccess()) { return $result; } } elseif ($name == "STATUS_ID") { $userId = $USER->getID(); $oldValueCheck = $oldValue; if ($oldValue === null) { $oldValueCheck = OrderStatus::getInitialStatus(); } $statusesList = OrderStatus::getAllowedUserStatuses($userId, $oldValueCheck); if (!array_key_exists($value, $statusesList)) { $result = new Result(); $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_ENTITY_WRONG_STATUS'), 'SALE_ORDER_ENTITY_WRONG_STATUS')); } $this->setField('DATE_STATUS', new Type\DateTime()); if ($USER->isAuthorized()) { $this->setField('EMP_STATUS_ID', $userId); } } return new Result(); }
public static function getStatusesList($userId, $orderStatus = false) { if ($orderStatus === false) { $orderStatus = \Bitrix\Sale\OrderStatus::getInitialStatus(); } return \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($userId, $orderStatus); }
while ($row = $result->Fetch()) { if ($row['GROUP_ID'] > 2) { $saleGroupIds[] = $row['GROUP_ID']; } } if ($saleGroupIds) { $result = GroupTable::getList(array('select' => array('ID', 'NAME'), 'filter' => array('=ID' => $saleGroupIds), 'order' => array('C_SORT' => 'ASC', 'ID' => 'ASC'))); while ($row = $result->fetch()) { $groups[$row['ID']] = $row['NAME']; } } // A D D / U P D A T E ///////////////////////////////////////////////////////////////////////////////////////////////// if ($_SERVER['REQUEST_METHOD'] == 'POST' && !$readOnly && check_bitrix_sessid() && ($_POST['save'] || $_POST['apply'])) { $errors = array(); $statusType = $_REQUEST['TYPE'] == 'O' ? 'O' : 'D'; $lockedStatusList = array("O" => array(\Bitrix\Sale\OrderStatus::getInitialStatus(), \Bitrix\Sale\OrderStatus::getFinalStatus()), "D" => array(\Bitrix\Sale\DeliveryStatus::getInitialStatus(), \Bitrix\Sale\DeliveryStatus::getFinalStatus())); if ($statusId) { foreach ($lockedStatusList as $lockStatusType => $lockStatusIdList) { foreach ($lockStatusIdList as $lockStatusId) { if ($lockStatusId == $statusId && $statusType != $lockStatusType) { $errors[] = Loc::getMessage('SALE_STATUS_WRONG_TYPE', array('#STATUS_ID#' => htmlspecialcharsEx($statusId), '#STATUS_TYPE#' => Loc::getMessage('SSEN_TYPE_' . $statusType))); break; } } } } // prepare & check status $status = array('TYPE' => $statusType, 'SORT' => ($statusSort = intval($_POST['SORT'])) ? $statusSort : 100, 'NOTIFY' => $_POST['NOTIFY'] ? 'Y' : 'N'); $isNew = true; $result = new \Bitrix\Main\Entity\Result(); if ($statusId) {
?> <input type="text" name="filter_price_to" value="<?php echo floatval($filter_price_to) > 0 ? floatval($filter_price_to) : ""; ?> " size="3"> </td> </tr> <tr> <td valign="top"><?php echo Loc::getMessage("SALE_F_STATUS"); ?> :<br /><img src="/bitrix/images/sale/mouse.gif" width="44" height="21" border="0" alt=""></td> <td valign="top"> <select name="filter_status[]" multiple size="3"> <?php $statusesList = \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($USER->GetID(), \Bitrix\Sale\OrderStatus::getInitialStatus()); foreach ($statusesList as $statusCode => $statusName) { ?> <option value="<?php echo htmlspecialcharsbx($statusCode); ?> "<?php if (is_array($filter_status) && in_array($statusCode, $filter_status)) { echo " selected"; } ?> >[<?php echo htmlspecialcharsbx($statusCode); ?> ] <?php echo htmlspecialcharsEx($statusName);
foreach ($payments as $payment) { echo Blocks\OrderPayment::getEdit($payment, ++$index, $_POST['PAYMENT'][$index]); } echo Blocks\OrderPayment::createButtonAddPayment('edit'); break; case 'relprops': echo Blocks\OrderBuyer::getPropsEdit($order); break; case "financeinfo": echo Blocks\OrderFinanceInfo::getView($order); break; case "additional": echo Blocks\OrderAdditional::getEdit($order, $formId . "_form", 'ORDER'); break; case "statusorder": echo Blocks\OrderStatus::getEditSimple($USER->GetID(), 'STATUS_ID', \Bitrix\Sale\OrderStatus::getInitialStatus()); break; } $tabControl->DraggableBlockEnd(); } ?> </div> </td></tr> <?php $tabControl->EndTab(); $tabControl->Buttons(array("back_url" => "/bitrix/admin/sale_order_create.php?lang=" . LANGUAGE_ID . "&SITE_ID=" . $siteId . GetFilterParams("filter_"))); $tabControl->End(); ?> <div style="display: none;"> <?php echo $orderBasket->getSettingsDialogContent();
public static function getStatusesList($userId) { return \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($userId, \Bitrix\Sale\OrderStatus::getInitialStatus()); }
/** * @param Order $order * @param array $formData * @param int $userId * * @return \Bitrix\Sale\Result */ protected static function fillSimpleFields(Order $order, array $formData, $userId = 0) { $result = new \Bitrix\Sale\Result(); if (isset($formData["ORDER"]["RESPONSIBLE_ID"])) { /** @var \Bitrix\Sale\Result $r */ $r = $order->setField("RESPONSIBLE_ID", $formData["ORDER"]["RESPONSIBLE_ID"]); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } } if (isset($formData["PERSON_TYPE_ID"]) && intval($formData["PERSON_TYPE_ID"]) > 0) { /** @var \Bitrix\Sale\Result $r */ $r = $order->setPersonTypeId(intval($formData['PERSON_TYPE_ID'])); } else { /** @var \Bitrix\Sale\Result $r */ $r = $order->setPersonTypeId(Blocks\OrderBuyer::getDefaultPersonType($order->getSiteId())); } if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } if (isset($formData["ORDER"]["COMMENTS"])) { /** @var \Bitrix\Sale\Result $r */ $r = $order->setField("COMMENTS", $formData["ORDER"]["COMMENTS"]); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } } if (isset($formData["USER_DESCRIPTION"])) { /** @var \Bitrix\Sale\Result $r */ $r = $order->setField("USER_DESCRIPTION", $formData["USER_DESCRIPTION"]); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } } if (isset($formData["RESPONSIBLE_ID"])) { /** @var \Bitrix\Sale\Result $r */ $r = $order->setField("RESPONSIBLE_ID", $formData["RESPONSIBLE_ID"]); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } } if (isset($formData["STATUS_ID"]) && strlen($formData["STATUS_ID"]) > 0) { $statusesList = \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($userId, \Bitrix\Sale\OrderStatus::getInitialStatus()); if (array_key_exists($formData["STATUS_ID"], $statusesList)) { /** @var \Bitrix\Sale\Result $r */ $r = $order->setField("STATUS_ID", $formData["STATUS_ID"]); if (!$r->isSuccess()) { $result->addErrors($r->getErrors()); } } } return $result; }
/** * @param Order $order * @param array $formData * @param int $userId * @return Order * @throws \Bitrix\Main\ArgumentOutOfRangeException */ protected static function fillSimpleFields(Order $order, array $formData, $userId = 0) { if (isset($formData["ORDER"]["RESPONSIBLE_ID"])) { $order->setField("RESPONSIBLE_ID", $formData["ORDER"]["RESPONSIBLE_ID"]); } if (isset($formData["PERSON_TYPE_ID"]) && $formData["PERSON_TYPE_ID"] > 0) { $order->setPersonTypeId($formData['PERSON_TYPE_ID']); } if (isset($formData["ORDER"]["COMMENTS"])) { $order->setField("COMMENTS", $formData["ORDER"]["COMMENTS"]); } if (isset($formData["USER_DESCRIPTION"])) { $order->setField("USER_DESCRIPTION", $formData["USER_DESCRIPTION"]); } if (isset($formData["RESPONSIBLE_ID"])) { $order->setField("RESPONSIBLE_ID", $formData["RESPONSIBLE_ID"]); } if (isset($formData["STATUS_ID"]) && strlen($formData["STATUS_ID"]) > 0) { $statusesList = \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($userId, \Bitrix\Sale\OrderStatus::getInitialStatus()); if (array_key_exists($formData["STATUS_ID"], $statusesList)) { $order->setField("STATUS_ID", $formData["STATUS_ID"]); } } return $order; }