Exemplo n.º 1
0
 /**
  * @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;
 }
Exemplo n.º 2
0
 /**
  * @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;
 }
Exemplo n.º 3
0
 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()));
         }
     }
 }
Exemplo n.º 4
0
 /**
  * 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();
 }
Exemplo n.º 5
0
 public static function getStatusesList($userId, $orderStatus = false)
 {
     if ($orderStatus === false) {
         $orderStatus = \Bitrix\Sale\OrderStatus::getInitialStatus();
     }
     return \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($userId, $orderStatus);
 }
Exemplo n.º 6
0
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) {
Exemplo n.º 7
0
?>
			<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);
Exemplo n.º 8
0
            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();
Exemplo n.º 9
0
 public static function getStatusesList($userId)
 {
     return \Bitrix\Sale\OrderStatus::getAllowedUserStatuses($userId, \Bitrix\Sale\OrderStatus::getInitialStatus());
 }
Exemplo n.º 10
0
 /**
  * @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;
 }
Exemplo n.º 11
0
 /**
  * @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;
 }