예제 #1
0
 /**
  * <p>Метод добавляет новое значение свойства к заказу на основании параметров arFields. Метод динамичный.</p>
  *
  *
  * @param array $arFields  Ассоциативный массив параметров значения свойства, ключами в
  * котором являются названия параметров значения свойства, а
  * значениями - соответствующие значения.<br><br> Допустимые ключи:<ul>
  * <li> <b>ORDER_ID</b> - код заказа (обязательное);</li> <li> <b>ORDER_PROPS_ID</b> - код
  * свойства (обязательное);</li> <li> <b>NAME</b> - название свойства
  * (обязательное);</li> <li> <b>VALUE</b> - значение свойства;</li> <li> <b>CODE</b> -
  * символьный код свойства.</li> </ul>
  *
  * @return int <p>Метод возвращает код добавленного значения свойства или <i>false</i>
  * в случае ошибки.</p> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arFields = array(
  *    "ORDER_ID" =&gt; 124859,
  *    "ORDER_PROPS_ID" =&gt; 15,
  *    "NAME" =&gt; "Адрес доставки",
  *    "CODE" =&gt; "ADDRESS",
  *    "VALUE" =&gt; "ул. Строителей, дом 88, кв. 15"
  * );
  * 
  * CSaleOrderPropsValue::Add($arFields);
  * ?&gt;
  * 
  * 
  * //метод класса, который добавляет свойство (код/значение) к заказу, динамически узнавая идентификатор свойства: 
  *  public static function AddOrderProperty($code, $value, $order) {
  *       if (!strlen($code)) {
  *          return false;
  *       }
  *       if (CModule::IncludeModule('sale')) {
  *          if ($arProp = CSaleOrderProps::GetList(array(), array('CODE' =&gt; $code))-&gt;Fetch()) {
  *             return CSaleOrderPropsValue::Add(array(
  *                'NAME' =&gt; $arProp['NAME'],
  *                'CODE' =&gt; $arProp['CODE'],
  *                'ORDER_PROPS_ID' =&gt; $arProp['ID'],
  *                'ORDER_ID' =&gt; $order,
  *                'VALUE' =&gt; $value,
  *             ));
  *          }
  *       }
  *    }
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderpropsvalue/csaleorderpropsvalue__add.af505780.php
  * @author Bitrix
  */
 public static function Add($arFields)
 {
     if (!self::CheckFields('ADD', $arFields, 0)) {
         return false;
     }
     //		if ($arFields['VALUE'] && ($oldProperty = CSaleOrderProps::GetById($arFields['ORDER_PROPS_ID'])))
     //		{
     //			$oldProperty['VALUE'] = $arFields['VALUE'];
     //			$arFields['VALUE'] = CSaleOrderPropsAdapter::convertOldToNew($oldProperty, 'VALUE', true);
     //		}
     // location ID to CODE, VALUE is always present
     if ((string) $arFields['VALUE'] != '') {
         $arFields['VALUE'] = self::translateLocationIDToCode($arFields['VALUE'], $arFields['ORDER_PROPS_ID']);
     }
     return Internals\OrderPropsValueTable::add(array_intersect_key($arFields, CSaleOrderPropsValueAdapter::$allFields))->getId();
 }
예제 #2
0
 /** @return Entity\Result */
 public function save()
 {
     $value = self::getValueForDB($this->fields->get('VALUE'));
     if ($valueId = $this->getId()) {
         if ($value == $this->savedValue) {
             $result = new Entity\UpdateResult();
         } else {
             $result = Internals\OrderPropsValueTable::update($valueId, array('VALUE' => $value));
             if ($result->isSuccess()) {
                 $this->savedValue = $value;
             }
         }
     } else {
         if ($value !== null) {
             $property = $this->property;
             $result = Internals\OrderPropsValueTable::add(array('ORDER_ID' => $this->getParentOrderId(), 'ORDER_PROPS_ID' => $property['ID'], 'NAME' => $property['NAME'], 'VALUE' => $value, 'CODE' => $property['CODE']));
             if ($result->isSuccess()) {
                 $this->savedValue = $value;
                 $this->setFieldNoDemand('ID', $result->getId());
             }
         } else {
             $result = new Entity\AddResult();
         }
     }
     return $result;
 }