8Loc::loadMessages(__FILE__);
16 if (!is_array($arOrder) && !is_array(
$arFilter))
18 $arOrder = strval($arOrder);
24 if (is_array($arGroupBy))
30 $arSelectFields =
array(
"ID",
"ORDER_ID",
"ORDER_PROPS_ID",
"NAME",
"VALUE",
"VALUE_ORIG",
"CODE");
33 if (
count($arSelectFields) <= 0)
34 $arSelectFields =
array(
"ID",
"ORDER_ID",
"ORDER_PROPS_ID",
"NAME",
"VALUE",
"VALUE_ORIG",
"CODE");
41 'VALUE_ORIG' =>
'VALUE',
42 'PROP_ID' =>
'PROPERTY.ID',
43 'PROP_PERSON_TYPE_ID' =>
'PROPERTY.PERSON_TYPE_ID',
44 'PROP_NAME' =>
'PROPERTY.NAME',
45 'PROP_TYPE' =>
'PROPERTY.TYPE',
46 'PROP_REQUIED' =>
'PROPERTY.REQUIRED',
47 'PROP_DEFAULT_VALUE' =>
'PROPERTY.DEFAULT_VALUE',
48 'PROP_SORT' =>
'PROPERTY.SORT',
49 'PROP_USER_PROPS' =>
'PROPERTY.USER_PROPS',
50 'PROP_IS_LOCATION' =>
'PROPERTY.IS_LOCATION',
51 'PROP_PROPS_GROUP_ID' =>
'PROPERTY.PROPS_GROUP_ID',
52 'PROP_DESCRIPTION' =>
'PROPERTY.DESCRIPTION',
53 'PROP_IS_EMAIL' =>
'PROPERTY.IS_EMAIL',
54 'PROP_IS_PROFILE_NAME' =>
'PROPERTY.IS_PROFILE_NAME',
55 'PROP_IS_PAYER' =>
'PROPERTY.IS_PAYER',
56 'PROP_IS_LOCATION4TAX' =>
'PROPERTY.IS_LOCATION4TAX',
57 'PROP_IS_ZIP' =>
'PROPERTY.IS_ZIP',
58 'PROP_CODE' =>
'PROPERTY.CODE',
59 'PROP_ACTIVE' =>
'PROPERTY.ACTIVE',
60 'PROP_UTIL' =>
'PROPERTY.UTIL',
62 'TYPE' =>
'PROPERTY.TYPE',
63 'SETTINGS' =>
'PROPERTY.SETTINGS',
64 'MULTIPLE' =>
'PROPERTY.MULTIPLE',
66 'PROPERTY_NAME' =>
'PROPERTY.NAME',
67 'PROPS_GROUP_ID' =>
'PROPERTY.PROPS_GROUP_ID',
68 'INPUT_FIELD_LOCATION' =>
'PROPERTY.INPUT_FIELD_LOCATION',
69 'IS_LOCATION' =>
'PROPERTY.IS_LOCATION',
70 'IS_EMAIL' =>
'PROPERTY.IS_EMAIL',
71 'IS_PROFILE_NAME' =>
'PROPERTY.IS_PROFILE_NAME',
72 'IS_PAYER' =>
'PROPERTY.IS_PAYER',
73 'IS_ZIP' =>
'PROPERTY.IS_ZIP',
74 'ACTIVE' =>
'PROPERTY.ACTIVE',
75 'UTIL' =>
'PROPERTY.UTIL',
76 'GROUP_SORT' =>
'PROPERTY.GROUP.SORT',
77 'GROUP_NAME' =>
'PROPERTY.GROUP.NAME',
82 $relationFilter =
array();
86 $relationFilter []=
array(
87 '=PROPERTY.Bitrix\Sale\Internals\OrderPropsRelationTable:lPROPERTY.ENTITY_TYPE' =>
'P',
88 '=PROPERTY.Bitrix\Sale\Internals\OrderPropsRelationTable:lPROPERTY.ENTITY_ID' =>
$arFilter[
'PAYSYSTEM_ID'],
94 $relationFilter[
'LOGIC'] =
'OR';
95 $relationFilter []=
array(
96 '=PROPERTY.Bitrix\Sale\Internals\OrderPropsRelationTable:lPROPERTY.ENTITY_TYPE' =>
'D',
97 '=PROPERTY.Bitrix\Sale\Internals\OrderPropsRelationTable:lPROPERTY.ENTITY_ID' =>
$arFilter[
'DELIVERY_ID'],
103 $query->addFilter(
null, $relationFilter);
114 return $query->exec()->getSelectedRowsCount();
120 $adapter->addFieldProxy(
'VALUE');
121 $result->addFetchAdapter($adapter);
123 if (!
$query->aggregated())
125 $query->addAliasSelect(
'TYPE');
126 $query->addAliasSelect(
'SETTINGS');
127 $query->addAliasSelect(
'MULTIPLE');
132 $sel =
$query->getSelect();
133 array_unshift($sel,
'PROPERTY_ID');
152 array(
'GROUP_SORT' =>
'ASC',
'GROUP_NAME' =>
'ASC',
'PROP_SORT' =>
'ASC',
'PROPERTY_NAME' =>
'ASC',
'PROP_ID' =>
'ASC'),
156 'ID',
'ORDER_ID',
'ORDER_PROPS_ID',
'NAME',
'VALUE',
'CODE',
157 'PROPERTY_NAME',
'TYPE',
'PROPS_GROUP_ID',
'INPUT_FIELD_LOCATION',
'IS_LOCATION',
'IS_EMAIL',
'IS_PROFILE_NAME',
'IS_PAYER',
'IS_ZIP',
'ACTIVE',
'UTIL',
158 'GROUP_NAME',
'GROUP_SORT',
159 'PROP_SORT',
'PROP_ID'
170 array(
'GROUP_SORT' =>
'ASC',
'GROUP_NAME' =>
'ASC',
'PROP_SORT' =>
'ASC',
'PROPERTY_NAME' =>
'ASC',
'PROP_ID' =>
'ASC'),
174 'ID',
'ORDER_ID',
'ORDER_PROPS_ID',
'NAME',
'VALUE',
'CODE',
175 'PROPERTY_NAME',
'TYPE',
'PROPS_GROUP_ID',
'INPUT_FIELD_LOCATION',
'IS_LOCATION',
'IS_EMAIL',
'IS_PROFILE_NAME',
'IS_PAYER',
'IS_ZIP',
'ACTIVE',
'UTIL',
176 'GROUP_NAME',
'GROUP_SORT',
177 'PROP_SORT',
'PROP_ID'
186 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SKGOPV_EMPTY_ORDER_ID"),
"EMPTY_ORDER_ID");
192 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SKGOPV_EMPTY_PROP_ID"),
"EMPTY_ORDER_PROPS_ID");
198 if (!($arOrder = CSaleOrder::GetByID(
$arFields[
"ORDER_ID"])))
200 $GLOBALS[
"APPLICATION"]->ThrowException(str_replace(
"#ID#",
$arFields[
"ORDER_ID"],
GetMessage(
"SKGOPV_NO_ORDER_ID")),
"ERROR_NO_ORDER");
209 $GLOBALS[
"APPLICATION"]->ThrowException(str_replace(
"#ID#",
$arFields[
"ORDER_PROPS_ID"],
GetMessage(
"SKGOPV_NO_PROP_ID")),
"ERROR_NO_PROPERY");
217 "ORDER_PROPS_ID" =>
$arFields[
"ORDER_PROPS_ID"],
222 if($arP = $dbP->Fetch())
224 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SKGOPV_DUPLICATE_PROP_ID", Array(
"#ID#" =>
$arFields[
"ORDER_PROPS_ID"],
"#ORDER_ID#" =>
$arFields[
"ORDER_ID"])),
"ERROR_DUPLICATE_PROP_ID");
233 && !self::GetByID(
$ID)
244 if (! self::CheckFields(
'ADD',
$arFields, 0))
253 if ($value = self::correctValueToMultiple(
$arFields[
'ORDER_PROPS_ID'],
$arFields[
'VALUE']))
265 if (
$res->isSuccess())
267 return $res->getId();
281 if((
string)
$arFields[
'ORDER_PROPS_ID'] !=
'')
282 $propId = intval(
$arFields[
'ORDER_PROPS_ID']);
286 $propId = $propValue[
'ORDER_PROPS_ID'];
294 if ($value = self::correctValueToMultiple(
$arFields[
'ORDER_PROPS_ID'],
$arFields[
'VALUE']))
308 if (
$res->isSuccess())
310 return $res->getId();
323 private static function correctValueToMultiple($id, $value)
327 $res = Internals\OrderPropsTable::getList(
array(
328 'select' =>
array(
'TYPE',
'MULTIPLE'),
333 if($propertyData =
$res->fetch())
335 if (($propertyData[
"MULTIPLE"] ==
'Y' || $propertyData[
"TYPE"] ==
'MULTISELECT') && !is_array($value))
337 $values = explode(
',', $value);
338 if (!empty($values) && is_array($values))
341 foreach ($values as $value)
354 if(isset($prop[
'TYPE']) && $prop[
'TYPE'] ==
'LOCATION')
365 $strSql =
"DELETE FROM b_sale_order_props_value WHERE ID = ".$ID.
" ";
366 return $DB->Query($strSql, True);
374 $strSql =
"DELETE FROM b_sale_order_props_value WHERE ORDER_ID = ".$orderID.
" ";
375 return $DB->Query($strSql, True);
382 private $fieldProxy =
array();
383 private array $select;
392 if((
string) $field ==
'')
395 $this->fieldProxy[
'PROXY_'.$field] = $field;
402 if (! isset($newProperty[
'TYPE']))
405 if(is_array($newProperty))
407 foreach($newProperty as
$k => $v)
409 if(isset($this->fieldProxy[
$k]))
411 unset($newProperty[
$k]);
412 $newProperty[$this->fieldProxy[
$k]] = $v;
419 if (array_key_exists(
'VALUE', $newProperty))
424 if (array_key_exists(
'TYPE', $oldProperty))
426 $oldProperty[
'PROP_TYPE' ] = $oldProperty[
'TYPE' ];
429 if (array_key_exists(
'SIZE1', $oldProperty))
431 $oldProperty[
'PROP_SIZE1'] = $oldProperty[
'SIZE1'];
434 if (array_key_exists(
'SIZE2', $oldProperty))
436 $oldProperty[
'PROP_SIZE2'] = $oldProperty[
'SIZE2'];
438 return array_intersect_key($oldProperty, $this->
select);
441 public static $allFields =
array(
'ORDER_ID'=>1,
'ORDER_PROPS_ID'=>1,
'NAME'=>1,
'VALUE'=>1,
'CODE'=>1);
static update($primary, array $data)
static tryTranslateIDToCode($id)
static GetOrderRelatedProps($ORDER_ID, $arFilter=array())
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static CheckFields($ACTION, &$arFields, $ID=0)
static GetOrderProps($ORDER_ID)
static translateLocationIDToCode($id, $orderPropId)
static DeleteByOrder($orderID)
static Update($ID, $arFields)
static convertNewToOld(array $property)
static getOldValue($value, $type)
__construct(array $select)
adapt(array $newProperty)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
GetMessage($name, $aReplace=null)
$GLOBALS['____1690880296']
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"