Ejemplo n.º 1
0
 /**
  * <p>Функция возвращает параметры варианта значения свойства заказа по коду свойства заказа и значению.</p>
  *
  *
  *
  *
  * @param int $PropID  Код свойства заказа. </ht
  *
  *
  *
  * @param string $Value  Значение свойства. </h
  *
  *
  *
  * @return array <p>Возвращается ассоциативный массив значений параметров заказа
  * с ключами:</p> <table class="tnormal" width="100%"> <tr> <th width="15%">Код</th> <th>Описание</th>
  * </tr> <tr> <td>ID</td> <td>Код варианта значения свойства заказа.</td> </tr> <tr>
  * <td>ORDER_PROPS_ID</td> <td>Код свойства заказа.</td> </tr> <tr> <td>NAME</td> <td>Название
  * варианта.</td> </tr> <tr> <td>VALUE</td> <td>Значение варианта.</td> </tr> <tr> <td>SORT</td>
  * <td>Индекс сортировки.</td> </tr> <tr> <td>DESCRIPTION</td> <td>Описание варианта
  * значения свойства заказа.</td> </tr> </table> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arVal = CSaleOrderPropsVariant::GetByValue(12, "F");
  * echo $arVal["NAME"];
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderpropsvariant/csaleorderpropsvariant__getbyvalue.48f24a76.php
  * @author Bitrix
  */
 public static function GetByValue($PropID, $Value)
 {
     $PropID = IntVal($PropID);
     $db_res = CSaleOrderPropsVariant::GetList($by = "SORT", $order = "ASC", array("ORDER_PROPS_ID" => $PropID, "VALUE" => $Value));
     if ($res = $db_res->Fetch()) {
         return $res;
     }
     return False;
 }
Ejemplo n.º 2
0
    static function GetProfileProps($profileID, $personID) {

        if (!empty($profileID)) {
            // получаем значения свойств
            $props = array();
            $res = CSaleOrderUserPropsValue::GetList(array(), array('USER_PROPS_ID'=>$profileID), false, false, array('ID', 'ORDER_PROPS_ID', 'VALUE'));
            while ($arRes = $res->Fetch()) {
                $props[$arRes['ORDER_PROPS_ID']] = array('VALUE' => htmlspecialchars($arRes['VALUE']));
            }
        }

        // если не задан $personID
        if (empty($personID)) {
            $res = CSalePersonType::GetList(Array(), Array());
            if ($arRes = $res->Fetch()) {
                $personID = $arRes["ID"];
            }
        }

        // получаем свойства
        $arProps = array();
        $res = CSaleOrderProps::GetList(array("SORT"=>"ASC"), array("PERSON_TYPE_ID" => $personID, "USER_PROPS" => "Y"), false, false, array());
        while ($arRes = $res->Fetch()) {
            if (in_array($arRes["TYPE"], array("SELECT", "MULTISELECT", "RADIO"))) {
                $rs = \CSaleOrderPropsVariant::GetList(array(), array("ORDER_PROPS_ID" => $arRes["ID"]));
                while ($arRs = $rs->Fetch()) {
                    $arRes["variants"][] = $arRs;
                }
            }

            if (!empty($props[$arRes['ID']])) {
                $arProps[$arRes['ID']] = array_merge($props[$arRes['ID']], $arRes);
            } else {
                $arProps[$arRes['ID']] = $arRes;
            }
        }
            return $arProps;
    }
Ejemplo n.º 3
0
				array(
						"PERSON_TYPE_ID" => $arUserProps["PERSON_TYPE_ID"],
						"PROPS_GROUP_ID" => $arOrderPropsGroup["ID"],
						"USER_PROPS" => "Y", "ACTIVE" => "Y", "UTIL" => "N"
					),
				false,
				false,
				array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "CODE", "SORT")
			);
		while($arOrderProps = $dbOrderProps->GetNext())
		{
			if ($arOrderProps["REQUIED"]=="Y" || $arOrderProps["IS_EMAIL"]=="Y" || $arOrderProps["IS_PROFILE_NAME"]=="Y" || $arOrderProps["IS_LOCATION"]=="Y" || $arOrderProps["IS_PAYER"]=="Y")
				$arOrderProps["REQUIED"] = "Y";
			if (in_array($arOrderProps["TYPE"], Array("SELECT", "MULTISELECT", "RADIO")))
			{
				$dbVars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=>$arOrderProps["ID"]));
				while ($vars = $dbVars->GetNext())
					$arOrderProps["VALUES"][] = $vars;
			}
			elseif($arOrderProps["TYPE"]=="LOCATION")
			{
				$propsOfTypeLocation[$arOrderProps['ID']] = true; // required for mapping ID<=>CODE below

				if(CSaleLocation::isLocationProMigrated())
				{
					$arOrderProps["VALUES"] = array();
					if(strlen($arOrderProps["DEFAULT_VALUE"]))
						$arOrderProps["DEFAULT_VALUE"] = CSaleLocation::getLocationIDbyCODE($arOrderProps["DEFAULT_VALUE"]);
				}
				else
				{
Ejemplo n.º 4
0
     // this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"]
     if (CSaleLocation::isLocationProMigrated() && !$locationFound && IntVal($curVal)) {
         // CSaleLocation::GetById() is enought intelligent to accept modern (not-country-or-region-or-city) ID or CODE
         $item = CSaleLocation::GetById($curVal);
         if ($item) {
             $item['NAME'] = $item["COUNTRY_NAME"] . (strlen($item["CITY_NAME"]) > 0 ? " - " : "") . $item["CITY_NAME"];
             $item['SELECTED'] = 'Y';
             $arProperties["VARIANTS"][] = $item;
         }
     }
     if (count($arProperties["VARIANTS"]) == 1) {
         $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"];
     }
 } elseif ($arProperties["TYPE"] == "RADIO") {
     $arProperties["VARIANTS"] = array();
     $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*"));
     while ($arVariants = $dbVariants->GetNext()) {
         if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) {
             $arVariants["CHECKED"] = "Y";
             $arProperties["VALUE_FORMATED"] = $arVariants["NAME"];
         }
         $arProperties["VARIANTS"][] = $arVariants;
     }
 }
 if ($arProperties["TYPE"] == "CHECKBOX" && strlen($curVal) <= 0 && $arProperties["REQUIED"] != "Y") {
     $curVal = "N";
 }
 if (!empty($curVal) && is_array($curVal) || !is_array($curVal) && (string) $curVal != "") {
     $arPropValues[$arProperties["ID"]] = $curVal;
 }
 if ($arProperties["USER_PROPS"] == "Y") {
Ejemplo n.º 5
0
function getOrderPropertiesHTML($arOrderProps, $arPropValues = array(), $LID, $USER_ID = '', $ORDER_ID = 0, $formVarsSubmit = false)
{
	$propertyGroupID = -1;
	$arDisableFieldForLocation = array();
	$resultHtml = "<table id=\"order_related_props\">";

	// get order properties values
	if ($formVarsSubmit)
	{
		$locationIndexForm = "";
		foreach ($_POST as $key => $value)
		{
			if (substr($key, 0, strlen("CITY_ORDER_PROP_")) == "CITY_ORDER_PROP_")
			{
				$arPropValues[intval(substr($key, strlen("CITY_ORDER_PROP_")))] = htmlspecialcharsbx($value);
				$locationIndexForm = intval(substr($key, strlen("CITY_ORDER_PROP_")));
			}
			if (substr($key, 0, strlen("ORDER_PROP_")) == "ORDER_PROP_")
			{
				if ($locationIndexForm != intval(substr($key, strlen("ORDER_PROP_"))))
				{
					if (!is_array($value))
						$arPropValues[intval(substr($key, strlen("ORDER_PROP_")))] = htmlspecialcharsbx($value);
					else
					{
						$arValues = array();
						foreach ($value as $k => $v)
							$arValues[$key] = htmlspecialcharsbx($v);

						$arPropValues[intval(substr($key, strlen("ORDER_PROP_")))] = $arValues;
					}
				}
			}
		}
	}

	// iterate over list of properties
	if (is_array($arOrderProps))
	{
		foreach ($arOrderProps as $arProperties)
		{
			if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID)
			{
				$resultHtml .= "<tr><td colspan=\"2\" style=\"text-align:center;font-weight:bold;font-size:14px;color:rgb(75, 98, 103);\" >".htmlspecialcharsEx($arProperties["GROUP_NAME"])."\n</td>\n</tr>";
				$propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]);
			}

			if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID)
				$propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]);

			$adit = "";
			$requiredField = "";
			if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y")
			{
				$adit = " class=\"adm-detail-required-field\"";
				$requiredField = " class=\"adm-detail-content-cell-l\"";
			}

			//delete town from location
			if (in_array($arProperties["ID"], $arDisableFieldForLocation))
				$resultHtml .= "<tr style=\"display:none;\" id=\"town_location_".$arProperties["ID"]."\"".$adit.">\n";
			else
				$resultHtml .= "<tr id=\"town_location_".$arProperties["ID"]."\"".$adit.">\n";

			if(($arProperties["TYPE"] == "MULTISELECT" || $arProperties["TYPE"] == "TEXTAREA") || ($ORDER_ID <= 0 && $arProperties["IS_PROFILE_NAME"] == "Y") )
				$resultHtml .= "<td valign=\"top\" class=\"adm-detail-content-cell-l\" width=\"40%\">\n";
			else
				$resultHtml .= "<td align=\"right\" width=\"40%\" ".$requiredField.">\n";

			$resultHtml .= $arProperties["NAME"].":</td>";

			$curVal = $arPropValues[intval($arProperties["ID"])];

			if($arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PAYER"] == "Y")
			{
				if(strlen($arProperties["DEFAULT_VALUE"]) <= 0 && intval($USER_ID) > 0)
				{
					$rsUser = CUser::GetByID($USER_ID);
					if ($arUser = $rsUser->Fetch())
					{
						if($arProperties["IS_EMAIL"] == "Y")
							$arProperties["DEFAULT_VALUE"] = $arUser["EMAIL"];
						else
						{
							if (strlen($arUser["LAST_NAME"]) > 0)
								$arProperties["DEFAULT_VALUE"] .= $arUser["LAST_NAME"];
							if (strlen($arUser["NAME"]) > 0)
								$arProperties["DEFAULT_VALUE"] .= " ".$arUser["NAME"];
							if (strlen($arUser["SECOND_NAME"]) > 0 AND strlen($arUser["NAME"]) > 0)
								$arProperties["DEFAULT_VALUE"] .= " ".$arUser["SECOND_NAME"];
						}
					}
				}
			}

			$resultHtml .= "<td class=\"adm-detail-content-cell-r\" width=\"60%\">";

			if ($arProperties["TYPE"] == "CHECKBOX")
			{
				$resultHtml .= '<input type="checkbox" class="inputcheckbox" ';
				$resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" value="Y"';
				$resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" ';
				if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y")
					$resultHtml .= " checked";
				$resultHtml .= '>';
			}
			elseif ($arProperties["TYPE"] == "TEXT")
			{
				$change = "";
				if ($arProperties["IS_ZIP"] == "Y")
				{
					$DELIVERY_LOCATION_ZIP = $curVal;
					$resultHtml .= '<script> locationZipID = \''.$arProperties["ID"].'\';</script>';
					$locationZipID = ((isset($curVal)) ? htmlspecialcharsEx($curVal) : htmlspecialcharsex($arProperties["DEFAULT_VALUE"]));
				}

				if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0)
				{
					$resultHtml .= '<div id="BREAK_NAME"';
					if ($ORDER_ID > 0 || ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist"))
						$resultHtml .= ' style="display:none"';
					$resultHtml .= '>';

					$BREAK_LAST_NAME_TMP = GetMessage('NEWO_BREAK_LAST_NAME');
					if (isset($_REQUEST["BREAK_LAST_NAME"]) && strlen($_REQUEST["BREAK_LAST_NAME"]) > 0)
						$BREAK_LAST_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_LAST_NAME"]));

					$NEWO_BREAK_NAME_TMP = GetMessage('NEWO_BREAK_NAME');
					if (isset($_REQUEST["BREAK_NAME"]) && strlen($_REQUEST["BREAK_NAME"]) > 0)
						$NEWO_BREAK_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_NAME"]));

					$BREAK_SECOND_NAME_TMP = GetMessage('NEWO_BREAK_SECOND_NAME');
					if (isset($_REQUEST["BREAK_SECOND_NAME"]) && strlen($_REQUEST["BREAK_SECOND_NAME"]) > 0)
						$BREAK_SECOND_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_SECOND_NAME"]));

					$resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_LAST_NAME\" id=\"BREAK_LAST_NAME\" size=\"30\" value=\"".$BREAK_LAST_NAME_TMP."\" /></div>";
					$resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_NAME\" id=\"BREAK_NAME_BUYER\" size=\"30\" value=\"".$NEWO_BREAK_NAME_TMP."\" /></div>";
					$resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_SECOND_NAME\" id=\"BREAK_SECOND_NAME\" size=\"30\" value=\"".$BREAK_SECOND_NAME_TMP."\" /></div>";
					$resultHtml .= '</div>';

					$resultHtml .= '<div id="NO_BREAK_NAME"';
					if ($ORDER_ID <= 0)
						$tmpNone = ' style="display:none"';
					if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist")
						$tmpNone = ' style="display:block"';
					$resultHtml .= $tmpNone.'>';
				}

				$resultHtml .= '<input type="text" maxlength="250" ';
				$resultHtml .= 'size="30" ';
				$resultHtml .= 'value="'.((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]).'" ';
				$resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" ';
				$resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '.$change.'>';

				if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0)
					$resultHtml .= '</div>';
			}
			elseif ($arProperties["TYPE"] == "SELECT")
			{
				$size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5;

				$resultHtml .= '<select name="ORDER_PROP_'.$arProperties["ID"].'" ';
				$resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" ';
				$resultHtml .= 'size='.$size.' ';
				$resultHtml .= 'class="typeselect">';
				$dbVariants = CSaleOrderPropsVariant::GetList(
					array("SORT" => "ASC"),
					array("ORDER_PROPS_ID" => $arProperties["ID"]),
					false,
					false,
					array("*")
				);
				while ($arVariants = $dbVariants->Fetch())
				{
					$resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"';
					if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"])
						$resultHtml .= " selected";
					$resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>';
				}
				$resultHtml .= '</select>';
			}
			elseif ($arProperties["TYPE"] == "MULTISELECT")
			{
				$size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5;

				$resultHtml .= '<select multiple name="ORDER_PROP_'.$arProperties["ID"].'[]" ';
				$resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" ';
				$resultHtml .= 'size='.$size.' ';
				$resultHtml .= 'class="typeselect" type="multyselect">';

				if (!is_array($curVal))
				{
					if (strlen($curVal) > 0 OR $ORDER_ID != "")
						$curVal = explode(",", $curVal);
					else
						$curVal = explode(",", $arProperties["DEFAULT_VALUE"]);

					$arCurVal = array();
					$countCurVal = count($curVal);
					for ($i = 0; $i < $countCurVal; $i++)
						$arCurVal[$i] = Trim($curVal[$i]);
				}
				else
					$arCurVal = $curVal;

				$dbVariants = CSaleOrderPropsVariant::GetList(
					array("SORT" => "ASC"),
					array("ORDER_PROPS_ID" => $arProperties["ID"]),
					false,
					false,
					array("*")
				);
				while ($arVariants = $dbVariants->Fetch())
				{
					$resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"';
					if (in_array($arVariants["VALUE"], $arCurVal))
						$resultHtml .= " selected";
					$resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>';
				}
				$resultHtml .= '</select>';
			}
			elseif ($arProperties["TYPE"] == "TEXTAREA")
			{
				$resultHtml .= '<textarea ';
				$resultHtml .= 'rows="4" ';
				$resultHtml .= 'cols="40" ';
				$resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" ';
				$resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" type="textarea">';
				$resultHtml .= ((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]);
				$resultHtml .= '</textarea>';
			}
			elseif ($arProperties["TYPE"] == "LOCATION")
			{
				$countryID = "";
				$cityID = "";
				$cityList = "";
				$DELIVERY_LOCATION = $arPropValues[intval($arProperties["ID"])];
				$locationID = $curVal;
				$tmpLocation = '';

				ob_start();

				CSaleLocation::proxySaleAjaxLocationsComponent(
					array(
						"SITE_ID" => $LID,
						"AJAX_CALL" => "N",
						"COUNTRY_INPUT_NAME" => "ORDER_PROP_".$arProperties["ID"],
						"REGION_INPUT_NAME" => "REGION_ORDER_PROP_".$arProperties["ID"],
						"CITY_INPUT_NAME" => "CITY_ORDER_PROP_".$arProperties["ID"],
						"CITY_OUT_LOCATION" => "Y",
						"ALLOW_EMPTY_CITY" => "Y",
						"LOCATION_VALUE" => $curVal,
						"COUNTRY" => "",
						"ONCITYCHANGE" => "",
						"PUBLIC" => "N",
					),
					array(
						"ID" => "",
						"CODE" => $curVal,
						"PROVIDE_LINK_BY" => "code",
					)
				);

				$tmpLocation = ob_get_contents();
				ob_end_clean();

				$resultHtml .= '<script>var locationID = \''.$arProperties["ID"].'\';</script>';
				$resultHtml .= $tmpLocation;
			}
			elseif ($arProperties["TYPE"] == "RADIO")
			{
				$dbVariants = CSaleOrderPropsVariant::GetList(
					array("SORT" => "ASC"),
					array("ORDER_PROPS_ID" => $arProperties["ID"]),
					false,
					false,
					array("*")
				);
				$resultHtml .= '<div id="ORDER_PROP_'.$arProperties["ID"].'">';// type="radio"
				while ($arVariants = $dbVariants->Fetch())
				{
					$resultHtml .= '<input type="radio" class="inputradio" ';
					$resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" ';
					$resultHtml .= 'value="'.htmlspecialcharsex($arVariants["VALUE"]).'"';
					if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"])
						$resultHtml .= " checked";
					$resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'<br>';
				}
				$resultHtml .= '</div>';
			}
			elseif ($arProperties["TYPE"] == "FILE")
			{
				$arValues = array();
				$arTmpValues = array();
				if (isset($arPropValues[$arProperties["ID"]]) && !is_array($arPropValues[$arProperties["ID"]]))
				{
					$arTmpValues = explode(", ", $arPropValues[$arProperties["ID"]]);
					foreach ($arTmpValues as $key => $value)
						$arValues[$value] = $value;
				}

				$resultHtml .= fShowFilePropertyField("ORDER_PROP_".$arProperties["ID"], $arProperties, $arValues, $arProperties["SIZE1"], $formVarsSubmit);
			}

			if (strlen($arProperties["DESCRIPTION"]) > 0)
			{
				$resultHtml .= "<br><small>".htmlspecialcharsEx($arProperties["DESCRIPTION"])."</small>";
			}
			$resultHtml .= "\n</td>\n</tr>";

		}//end while
	}

	$resultHtml .= "</table>";

	return $resultHtml;
}
Ejemplo n.º 6
0
</td>
					<td align="center"><?php 
    echo GetMessage("SALE_VARIANTS_SORT");
    ?>
</td>
					<td align="center"><?php 
    echo GetMessage("SALE_VARIANTS_DESCR");
    ?>
</td>
					<td align="center"><?php 
    echo GetMessage("SALE_VARIANTS_DEL");
    ?>
</td>
				</tr>
			<?php 
    $db_propsVars = CSaleOrderPropsVariant::GetList($b = "SORT", $o = "ASC", array("ORDER_PROPS_ID" => $ID));
    $ind = -1;
    $oldind = -1;
    while ($db_propsVars->ExtractFields("f_")) {
        $ind++;
        $oldind++;
        if ($bInitVars) {
            $DB->InitTableVarsForEdit("b_sale_order_props_variant", "", "f_", "_" . $oldind);
        }
        ?>
				<tr>
					<td>
						<input type="hidden" name="ID_<?php 
        echo $ind;
        ?>
" value="<?php 
Ejemplo n.º 7
0
 static function DoProcessOrder(&$arOrder, $arOrderPropsValues, &$arErrors, &$arWarnings)
 {
     if (!is_array($arOrderPropsValues)) {
         $arOrderPropsValues = array();
     }
     $arUser = null;
     $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC"), array("PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], "ACTIVE" => "Y"), false, false, array("ID", "NAME", "TYPE", "IS_LOCATION", "IS_LOCATION4TAX", "IS_PROFILE_NAME", "IS_PAYER", "IS_EMAIL", "REQUIED", "SORT", "IS_ZIP", "CODE", "DEFAULT_VALUE"));
     while ($arOrderProp = $dbOrderProps->Fetch()) {
         if (!array_key_exists($arOrderProp["ID"], $arOrderPropsValues)) {
             $curVal = $arOrderProp["DEFAULT_VALUE"];
             if (strlen($curVal) <= 0) {
                 if ($arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_PAYER"] == "Y") {
                     if ($arUser == null) {
                         $dbUser = CUser::GetList($by = "ID", $order = "desc", array("ID_EQUAL_EXACT" => $arOrder["USER_ID"]));
                         $arUser = $dbUser->Fetch();
                     }
                     if ($arOrderProp["IS_EMAIL"] == "Y") {
                         $curVal = is_array($arUser) ? $arUser["EMAIL"] : "";
                     } elseif ($arOrderProp["IS_PAYER"] == "Y") {
                         $curVal = is_array($arUser) ? $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"] : "";
                     }
                 }
             }
         } else {
             $curVal = $arOrderPropsValues[$arOrderProp["ID"]];
         }
         if (!is_array($curVal) && strlen($curVal) > 0 || is_array($curVal) && count($curVal) > 0) {
             //if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "MULTISELECT" || $arOrderProp["TYPE"] == "RADIO")
             if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") {
                 $arVariants = array();
                 $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arOrderProp["ID"]), false, false, array("*"));
                 while ($arVariant = $dbVariants->Fetch()) {
                     $arVariants[] = $arVariant["VALUE"];
                 }
                 if (!is_array($curVal)) {
                     $curVal = array($curVal);
                 }
                 $arKeys = array_keys($curVal);
                 foreach ($arKeys as $k) {
                     if (!in_array($curVal[$k], $arVariants)) {
                         unset($curVal[$k]);
                     }
                 }
                 if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") {
                     $curVal = array_shift($curVal);
                 }
             } elseif ($arOrderProp["TYPE"] == "LOCATION") {
                 if (is_array($curVal)) {
                     $curVal = array_shift($curVal);
                 }
                 $curVal = intval($curVal);
                 $dbVariants = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID"));
                 if ($arVariant = $dbVariants->Fetch()) {
                     $curVal = intval($arVariant["ID"]);
                 } else {
                     $curVal = null;
                 }
             }
         }
         if ($arOrderProp["TYPE"] == "LOCATION" && ($arOrderProp["IS_LOCATION"] == "Y" || $arOrderProp["IS_LOCATION4TAX"] == "Y")) {
             $curVal = intval($curVal);
             if ($arOrderProp["IS_LOCATION"] == "Y") {
                 $arOrder["DELIVERY_LOCATION"] = $curVal;
             }
             if ($arOrderProp["IS_LOCATION4TAX"] == "Y") {
                 $arOrder["TAX_LOCATION"] = $curVal;
             }
             if ($curVal <= 0) {
                 $bErrorField = true;
             }
         } elseif ($arOrderProp["IS_PROFILE_NAME"] == "Y" || $arOrderProp["IS_PAYER"] == "Y" || $arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_ZIP"] == "Y") {
             $curVal = trim($curVal);
             if ($arOrderProp["IS_PROFILE_NAME"] == "Y") {
                 $arOrder["PROFILE_NAME"] = $curVal;
             }
             if ($arOrderProp["IS_PAYER"] == "Y") {
                 $arOrder["PAYER_NAME"] = $curVal;
             }
             if ($arOrderProp["IS_ZIP"] == "Y") {
                 $arOrder["DELIVERY_LOCATION_ZIP"] = $curVal;
             }
             if ($arOrderProp["IS_EMAIL"] == "Y") {
                 $arOrder["USER_EMAIL"] = $curVal;
                 if (!check_email($curVal)) {
                     $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace(array("#EMAIL#", "#NAME#"), array(htmlspecialcharsbx($curVal), htmlspecialcharsbx($arOrderProp["NAME"])), GetMessage("SALE_GOPE_WRONG_EMAIL")));
                 }
             }
             if (strlen($curVal) <= 0) {
                 $bErrorField = true;
             }
         } elseif ($arOrderProp["REQUIED"] == "Y") {
             if ($arOrderProp["TYPE"] == "TEXT" || $arOrderProp["TYPE"] == "TEXTAREA" || $arOrderProp["TYPE"] == "RADIO" || $arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "CHECKBOX") {
                 if (strlen($curVal) <= 0) {
                     $bErrorField = true;
                 }
             } elseif ($arOrderProp["TYPE"] == "LOCATION") {
                 if (intval($curVal) <= 0) {
                     $bErrorField = true;
                 }
             } elseif ($arOrderProp["TYPE"] == "MULTISELECT") {
                 //if (!is_array($curVal) || count($curVal) <= 0)
                 if (strlen($curVal) <= 0) {
                     $bErrorField = true;
                 }
             }
         }
         if ($bErrorField) {
             $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace("#NAME#", htmlspecialcharsbx($arOrderProp["NAME"]), GetMessage("SALE_GOPE_FIELD_EMPTY")));
             $bErrorField = false;
         }
         $arOrder["ORDER_PROP"][$arOrderProp["ID"]] = $curVal;
     }
 }
Ejemplo n.º 8
0
function getOrderPropFormated($arProperties, $arResult, &$arUserResult, &$arDeleteFieldLocation = array())
{
    global $USER;
    $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]];
    $curLocation = false;
    static $propertyGroupID = 0;
    static $propertyUSER_PROPS = "";
    // take data from user profile
    if ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) > 0 && !($arResult["HAVE_PREPAYMENT"] && $arUserResult["PROFILE_DEFAULT"] == "Y" && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]))) {
        $dbUserPropsValues = CSaleOrderUserPropsValue::GetList(array("SORT" => "ASC"), array("USER_PROPS_ID" => $arUserResult["PROFILE_ID"], "ORDER_PROPS_ID" => $arProperties["ID"], "USER_ID" => intval($USER->GetID())), false, false, array("VALUE", "PROP_TYPE", "VARIANT_NAME", "SORT", "ORDER_PROPS_ID"));
        if ($arUserPropsValues = $dbUserPropsValues->Fetch()) {
            $valueTmp = "";
            if ($arUserPropsValues["PROP_TYPE"] == "MULTISELECT") {
                $arUserPropsValues["VALUE"] = explode(",", $arUserPropsValues["VALUE"]);
            }
            $curVal = $arUserPropsValues["VALUE"];
        }
    } elseif ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) <= 0) {
        if (isset($curVal)) {
            unset($curVal);
        }
    } elseif (isset($arUserResult["ORDER_PROP"][$arProperties["ID"]])) {
        $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]];
    } elseif ($arResult["HAVE_PREPAYMENT"] && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]])) {
        $curVal = $arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]];
        if ($arProperties["TYPE"] == "LOCATION") {
            $curLocation = $curVal;
        }
    }
    if (intval($_REQUEST["NEW_LOCATION_" . $arProperties["ID"]]) > 0) {
        $curVal = intval($_REQUEST["NEW_LOCATION_" . $arProperties["ID"]]);
    }
    $arProperties["FIELD_NAME"] = "ORDER_PROP_" . $arProperties["ID"];
    if (strlen($arProperties["CODE"]) > 0) {
        $arProperties["FIELD_ID"] = "ORDER_PROP_" . $arProperties["CODE"];
    } else {
        $arProperties["FIELD_ID"] = "ORDER_PROP_" . $arProperties["ID"];
    }
    if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID || $propertyUSER_PROPS != $arProperties["USER_PROPS"]) {
        $arProperties["SHOW_GROUP_NAME"] = "Y";
    }
    $propertyGroupID = $arProperties["PROPS_GROUP_ID"];
    $propertyUSER_PROPS = $arProperties["USER_PROPS"];
    if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") {
        $arProperties["REQUIED_FORMATED"] = "Y";
    }
    if ($arProperties["TYPE"] == "CHECKBOX") {
        if ($curVal == "Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"] == "Y") {
            $arProperties["CHECKED"] = "Y";
            $arProperties["VALUE_FORMATED"] = GetMessage("SOA_Y");
        } else {
            $arProperties["VALUE_FORMATED"] = GetMessage("SOA_N");
        }
        $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 30;
    } elseif ($arProperties["TYPE"] == "TEXT") {
        if (strlen($curVal) <= 0) {
            if (strlen($arProperties["DEFAULT_VALUE"]) > 0 && !isset($curVal)) {
                $arProperties["VALUE"] = $arProperties["DEFAULT_VALUE"];
            } elseif ($arProperties["IS_EMAIL"] == "Y") {
                $arProperties["VALUE"] = $USER->GetEmail();
            } elseif ($arProperties["IS_PAYER"] == "Y") {
                //$arProperties["VALUE"] = $USER->GetFullName();
                $rsUser = CUser::GetByID($USER->GetID());
                $fio = "";
                if ($arUser = $rsUser->Fetch()) {
                    $fio = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"]), false, false);
                }
                $arProperties["VALUE"] = $fio;
            }
        } else {
            $arProperties["VALUE"] = $curVal;
        }
        //select ZIP for LOCATION
        if ($arProperties["IS_ZIP"] == "Y" && $arUserResult["PROFILE_CHANGE"] == "N") {
            $dbPropertiesLoc = CSaleOrderProps::GetList(array("ID" => "DESC"), array("PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "ACTIVE" => "Y", "UTIL" => "N", "IS_LOCATION" => "Y"), false, false, array("ID"));
            $arPropertiesLoc = $dbPropertiesLoc->Fetch();
            if ($arPropertiesLoc["ID"] > 0) {
                $arZipLocation = array();
                if (strlen($curVal) > 0) {
                    $arZipLocation = CSaleLocation::GetByZIP($curVal);
                }
                $rsZipList = CSaleLocation::GetLocationZIP($arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]);
                if ($arZip = $rsZipList->Fetch()) {
                    if (strlen($arZip["ZIP"]) > 0 && (empty($arZipLocation) || $arZipLocation["ID"] != $arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]])) {
                        $arProperties["VALUE"] = $arZip["ZIP"];
                    }
                }
            }
        }
        if ($arProperties["IS_ZIP"] == "Y") {
            $arUserResult["DELIVERY_LOCATION_ZIP"] = $arProperties["VALUE"];
        }
        $arProperties["VALUE"] = htmlspecialcharsEx($arProperties["VALUE"]);
        $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"];
    } elseif ($arProperties["TYPE"] == "SELECT") {
        $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1;
        $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*"));
        $flagDefault = "N";
        $nameProperty = "";
        while ($arVariants = $dbVariants->GetNext()) {
            if ($flagDefault == "N" && $nameProperty == "") {
                $nameProperty = $arVariants["NAME"];
            }
            if ($arVariants["VALUE"] == $curVal || (!isset($curVal) || $curVal == "") && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) {
                $arVariants["SELECTED"] = "Y";
                $arProperties["VALUE_FORMATED"] = $arVariants["NAME"];
                $flagDefault = "Y";
            }
            $arProperties["VARIANTS"][] = $arVariants;
        }
        if ($flagDefault == "N") {
            $arProperties["VARIANTS"][0]["SELECTED"] = "Y";
            $arProperties["VARIANTS"][0]["VALUE_FORMATED"] = $nameProperty;
        }
    } elseif ($arProperties["TYPE"] == "MULTISELECT") {
        $arProperties["FIELD_NAME"] = "ORDER_PROP_" . $arProperties["ID"] . '[]';
        $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 5;
        $arDefVal = explode(",", $arProperties["DEFAULT_VALUE"]);
        $countDefVal = count($arDefVal);
        for ($i = 0; $i < $countDefVal; $i++) {
            $arDefVal[$i] = Trim($arDefVal[$i]);
        }
        $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*"));
        $i = 0;
        while ($arVariants = $dbVariants->GetNext()) {
            if (is_array($curVal) && in_array($arVariants["VALUE"], $curVal) || !isset($curVal) && in_array($arVariants["VALUE"], $arDefVal)) {
                $arVariants["SELECTED"] = "Y";
                if ($i > 0) {
                    $arProperties["VALUE_FORMATED"] .= ", ";
                }
                $arProperties["VALUE_FORMATED"] .= $arVariants["NAME"];
                $i++;
            }
            $arProperties["VARIANTS"][] = $arVariants;
        }
    } elseif ($arProperties["TYPE"] == "TEXTAREA") {
        $arProperties["SIZE2"] = intval($arProperties["SIZE2"]) > 0 ? $arProperties["SIZE2"] : 4;
        $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 40;
        $arProperties["VALUE"] = htmlspecialcharsEx(isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]);
        $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"];
    } elseif ($arProperties["TYPE"] == "LOCATION") {
        //enable location town text
        if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_" . $arProperties["ID"]])) {
            $rsLocationsList = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID", "CITY_ID"));
            $arCity = $rsLocationsList->GetNext();
            if (intval($arCity["CITY_ID"]) <= 0) {
                unset($arDeleteFieldLocation[$arProperties["ID"]]);
            } else {
                $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
            }
        } elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0) {
            $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
        }
        $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1;
        $dbVariants = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG"));
        while ($arVariants = $dbVariants->GetNext()) {
            if (intval($arVariants["ID"]) == intval($curVal) || !isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"]) || strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"])) {
                $arVariants["SELECTED"] = "Y";
                $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"];
                $arProperties["VALUE"] = $arVariants["ID"];
                if ($arProperties["IS_LOCATION"] == "Y") {
                    $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];
                }
                if ($arProperties["IS_LOCATION4TAX"] == "Y") {
                    $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];
                }
            }
            $arVariants["NAME"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"];
            $arProperties["VARIANTS"][] = $arVariants;
        }
        if (count($arProperties["VARIANTS"]) == 1) {
            $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"];
            if ($arProperties["IS_LOCATION"] == "Y") {
                $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];
            }
            if ($arProperties["IS_LOCATION4TAX"] == "Y") {
                $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];
            }
        }
    } elseif ($arProperties["TYPE"] == "RADIO") {
        $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*"));
        while ($arVariants = $dbVariants->GetNext()) {
            if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) {
                $arVariants["CHECKED"] = "Y";
                $arProperties["VALUE_FORMATED"] = $arVariants["NAME"];
            }
            $arProperties["VARIANTS"][] = $arVariants;
        }
    } elseif ($arProperties["TYPE"] == "FILE") {
        $arProperties["SIZE1"] = intval($arProperties["SIZE1"]);
        $arProperties["VALUE"] = isset($curVal) ? CSaleHelper::getFileInfo($curVal) : $arProperties["DEFAULT_VALUE"];
    }
    return $arProperties;
}
Ejemplo n.º 9
0
function getOrderPropFormated($arProperties, $arResult, &$arUserResult, &$arDeleteFieldLocation = array())
{
	global $USER;

	$isProfileChanged = ($arUserResult["PROFILE_CHANGE"] == "Y");

	$isEmptyUserResult = (empty($arUserResult["ORDER_PROP"]));

	$curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]];
	$curLocation = false;
	static $propertyGroupID = 0;
	static $propertyUSER_PROPS = "";

	// take data from user profile
	if ($arUserResult["PROFILE_CHANGE"] == "Y"
		&& intval($arUserResult["PROFILE_ID"]) > 0
		&& !($arResult["HAVE_PREPAYMENT"]
		&& $arUserResult["PROFILE_DEFAULT"] == "Y"
		&& !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]])))
	{
		$dbUserPropsValues = CSaleOrderUserPropsValue::GetList(
			array("SORT" => "ASC"),
			array(
				"USER_PROPS_ID" => $arUserResult["PROFILE_ID"],
				"ORDER_PROPS_ID" => $arProperties["ID"],
				"USER_ID" => intval($USER->GetID()),
			),
			false,
			false,
			array("VALUE", "PROP_TYPE", "VARIANT_NAME", "SORT", "ORDER_PROPS_ID")
		);
		if ($arUserPropsValues = $dbUserPropsValues->Fetch())
		{
			$valueTmp = "";
			if ($arUserPropsValues["PROP_TYPE"] == "MULTISELECT")
			{
				$arUserPropsValues["VALUE"] = explode(",", $arUserPropsValues["VALUE"]);
			}
			$curVal = $arUserPropsValues["VALUE"];
		}
	}
	elseif($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) <= 0)
	{
		if (isset($curVal))
			unset($curVal);
	}
	elseif(isset($arUserResult["ORDER_PROP"][$arProperties["ID"]]))
		$curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]];
	elseif($arResult["HAVE_PREPAYMENT"] && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]))
	{
		$curVal = $arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]];
		if($arProperties["TYPE"] == "LOCATION")
			$curLocation = $curVal;
	}

	if (intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]) > 0)
		$curVal = intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]);

	$arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"];

	if(strlen($arProperties["CODE"]) > 0)
		$arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["CODE"];
	else
		$arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["ID"];

	if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID || $propertyUSER_PROPS != $arProperties["USER_PROPS"])
		$arProperties["SHOW_GROUP_NAME"] = "Y";

	$propertyGroupID = $arProperties["PROPS_GROUP_ID"];
	$propertyUSER_PROPS = $arProperties["USER_PROPS"];

	if ($arProperties["REQUIED"]=="Y" || $arProperties["IS_EMAIL"]=="Y" || $arProperties["IS_PROFILE_NAME"]=="Y" || $arProperties["IS_LOCATION"]=="Y" || $arProperties["IS_LOCATION4TAX"]=="Y" || $arProperties["IS_PAYER"]=="Y" || $arProperties["IS_ZIP"]=="Y")
		$arProperties["REQUIED_FORMATED"]="Y";

	if ($arProperties["TYPE"] == "CHECKBOX")
	{
		if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y")
		{
			$arProperties["CHECKED"] = "Y";
			$arProperties["VALUE_FORMATED"] = GetMessage("SOA_Y");
		}
		else
			$arProperties["VALUE_FORMATED"] = GetMessage("SOA_N");

		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 30);

		if ($isProfileChanged || $isEmptyUserResult)
		{
			$arUserResult["ORDER_PROP"][$arProperties["ID"]] = (isset($arProperties["CHECKED"]) && $arProperties["CHECKED"] == "Y" ? 'Y' : "N");

		}

	}
	elseif ($arProperties["TYPE"] == "TEXT")
	{
		if (strlen($curVal) <= 0)
		{
			if(strlen($arProperties["DEFAULT_VALUE"])>0 && !isset($curVal))
				$arProperties["VALUE"] = $arProperties["DEFAULT_VALUE"];
			elseif ($arProperties["IS_EMAIL"] == "Y")
				$arProperties["VALUE"] = $USER->GetEmail();
			elseif ($arProperties["IS_PAYER"] == "Y")
			{
				//$arProperties["VALUE"] = $USER->GetFullName();
				$rsUser = CUser::GetByID($USER->GetID());
				$fio = "";
				if ($arUser = $rsUser->Fetch())
				{
					$fio = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"]), false, false);
				}
				$arProperties["VALUE"] = $fio;
			}

			$arProperties["SOURCE"] = 'DEFAULT';
		}
		else
		{
			$arProperties["VALUE"] = $curVal;
			$arProperties["SOURCE"] = 'FORM';
		}

		//select ZIP for LOCATION
		if ($arProperties["IS_ZIP"] == "Y" && $arUserResult["PROFILE_CHANGE"] == "N")
		{
			$dbPropertiesLoc = CSaleOrderProps::GetList(
					array("ID" => "DESC"),
					array(
						"PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"],
						"ACTIVE" => "Y",
						"UTIL" => "N",
						"IS_LOCATION" => "Y"
						),
					false,
					false,
					array("ID")
				);
			$arPropertiesLoc = $dbPropertiesLoc->Fetch();

			if ($arPropertiesLoc["ID"] > 0)
			{
				$arZipLocation = array();
				if(strlen($curVal) > 0)
					$arZipLocation = CSaleLocation::GetByZIP($curVal);

				$rsZipList = CSaleLocation::GetLocationZIP($arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]);
				if($arZip = $rsZipList->Fetch())
				{
					if (strlen($arZip["ZIP"]) > 0 && (empty($arZipLocation) || $arZipLocation["ID"] != $arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]))
						$arProperties["VALUE"] = $arZip["ZIP"];
				}
			}
		}

		if ($arProperties["IS_ZIP"]=="Y")
			$arUserResult["DELIVERY_LOCATION_ZIP"] = $arProperties["VALUE"];


		$arProperties["VALUE"] = htmlspecialcharsEx($arProperties["VALUE"]);
		$arProperties["VALUE_FORMATED"] = $arProperties["VALUE"];

		if ($isProfileChanged || $isEmptyUserResult)
		{
			$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"];
		}

	}
	elseif ($arProperties["TYPE"] == "SELECT")
	{
		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1);
		$dbVariants = CSaleOrderPropsVariant::GetList(
				array("SORT" => "ASC", "NAME" => "ASC"),
				array("ORDER_PROPS_ID" => $arProperties["ID"]),
				false,
				false,
				array("*")

		);
		$flagDefault = "N";
		$nameProperty = "";
		while ($arVariants = $dbVariants->GetNext())
		{
			if ($flagDefault == "N" && $nameProperty == "")
			{
				$nameProperty = $arVariants["NAME"];
			}
			if (($arVariants["VALUE"] == $curVal) || ((!isset($curVal) || $curVal == "") && ($arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"])))
			{
				$arVariants["SELECTED"] = "Y";
				$arProperties["VALUE_FORMATED"] = $arVariants["NAME"];
				$flagDefault = "Y";

				if ($isProfileChanged || $isEmptyUserResult)
				{
					$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arVariants["NAME"];
				}
			}
			$arProperties["VARIANTS"][] = $arVariants;
		}
		if ($flagDefault == "N")
		{
			$arProperties["VARIANTS"][0]["SELECTED"]= "Y";
			$arProperties["VARIANTS"][0]["VALUE_FORMATED"] = $nameProperty;
			if ($isProfileChanged || $isEmptyUserResult)
			{
				$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $nameProperty;
			}
		}
	}
	elseif ($arProperties["TYPE"] == "MULTISELECT")
	{

		$setValue = array();
		$arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"].'[]';
		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 5);
		$arDefVal = explode(",", $arProperties["DEFAULT_VALUE"]);
		$countDefVal = count($arDefVal);
		for ($i = 0; $i < $countDefVal; $i++)
			$arDefVal[$i] = Trim($arDefVal[$i]);

		$dbVariants = CSaleOrderPropsVariant::GetList(
				array("SORT" => "ASC"),
				array("ORDER_PROPS_ID" => $arProperties["ID"]),
				false,
				false,
				array("*")
			);
		$i = 0;
		while ($arVariants = $dbVariants->GetNext())
		{
			if ((is_array($curVal) && in_array($arVariants["VALUE"], $curVal)) || (!isset($curVal) && in_array($arVariants["VALUE"], $arDefVal)))
			{
				$arVariants["SELECTED"] = "Y";
				if ($i > 0)
					$arProperties["VALUE_FORMATED"] .= ", ";
				$arProperties["VALUE_FORMATED"] .= $arVariants["NAME"];
				$setValue[] = $arVariants["VALUE"];
				$i++;
			}
			$arProperties["VARIANTS"][] = $arVariants;
		}

		if ($isProfileChanged || $isEmptyUserResult)
		{
			$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $setValue;
		}
	}
	elseif ($arProperties["TYPE"] == "TEXTAREA")
	{
		$arProperties["SIZE2"] = ((intval($arProperties["SIZE2"]) > 0) ? $arProperties["SIZE2"] : 4);
		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 40);
		$arProperties["VALUE"] = htmlspecialcharsEx(isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]);
		$arProperties["VALUE_FORMATED"] = $arProperties["VALUE"];

		if ($isProfileChanged || $isEmptyUserResult)
		{
			$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"];
		}
	}
	elseif ($arProperties["TYPE"] == "LOCATION")
	{
		if(CSaleLocation::isLocationProEnabled())
		{
			$arProperties["VALUE"] = $curVal;

			// variants
			$locationFound = false;
			$dbVariants = CSaleLocation::GetList(
					array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"),
					array("LID" => LANGUAGE_ID),
					false,
					false,
					array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG", "CITY_ID")
				);
			while ($arVariants = $dbVariants->GetNext())
			{
				if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"])))
				{
					// set formatted value
					$arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];

					// location found, set it as DELIVERY_LOCATION and TAX_LOCATION

					$arUserResult["DELIVERY_LOCATION"] = $arVariants['ID'];
					if($arProperties["IS_LOCATION4TAX"]=="Y")
						$arUserResult["TAX_LOCATION"] = $arVariants['ID'];

					$locationFound = $arVariants;
					$arVariants["SELECTED"] = "Y";

					if ($isProfileChanged || $isEmptyUserResult)
					{
						$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arVariants['ID'];
					}
				}
				$arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];

				// save to variants
				$arProperties["VARIANTS"][] = $arVariants;
			}

			// this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"]
			if(!$locationFound && IntVal($curVal))
			{
				$item = CSaleLocation::GetById($curVal);
				if($item)
				{
					// set formatted value
					$arProperties["VALUE_FORMATED"] = $item["COUNTRY_NAME"].((strlen($item["CITY_NAME"]) > 0) ? " - " : "").$item["CITY_NAME"];

					// location found, set it as DELIVERY_LOCATION and TAX_LOCATION
					$arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];
					if($arProperties["IS_LOCATION4TAX"]=="Y")
						$arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];

					if ($isProfileChanged || $isEmptyUserResult)
					{
						$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"];
					}
					$locationFound = $item;
					$item['SELECTED'] = 'Y';
					$item['NAME'] = $item["COUNTRY_NAME"].((strlen($item["CITY_NAME"]) > 0) ? " - " : "").$item["CITY_NAME"];

					// save to variants
					$arProperties["VARIANTS"][] = $item;
				}
			}

			if($locationFound)
			{

				// enable location town text
				if(isset($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'])) // its an ajax-hit and sale.location.selector.steps is used
				{
					if(intval($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'][$arProperties["ID"]])) // user MANUALLY selected "Other location" in the selector
					{
						// Manually chosen, decide...

						//if(intval($locationFound['CITY_ID'])) // we are already selected CITY, no town property needed
						//	$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
						//else // somewhere above
							unset($arDeleteFieldLocation[$arProperties["ID"]]);
					}
					else
					{
						$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
					}
				}
				else
				{
					// first load, dont know what to do. default: hide
					$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
				}

			}
			else
			{
				$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
			}
		}
		else
		{
			//enable location town text
			if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_".$arProperties["ID"]]))
			{
				$rsLocationsList = CSaleLocation::GetList(
					array(),
					array("ID" => $curVal),
					false,
					false,
					array("ID", "CITY_ID")
				);
				$arCity = $rsLocationsList->GetNext();

				if (intval($arCity["CITY_ID"]) <= 0)
					unset($arDeleteFieldLocation[$arProperties["ID"]]);
				else
					$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
			}
			elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0)
			{
				$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
			}

			$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1);
			$dbVariants = CSaleLocation::GetList(
					array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"),
					array("LID" => LANGUAGE_ID),
					false,
					false,
					array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG")
				);
			while ($arVariants = $dbVariants->GetNext())
			{
				if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"])))
				{
					$arVariants["SELECTED"] = "Y";
					$arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];
					$arProperties["VALUE"] = $arVariants["ID"];

					if ($arProperties["IS_LOCATION"]=="Y")
						$arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];
					if ($arProperties["IS_LOCATION4TAX"]=="Y")
						$arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];

					if ($isProfileChanged || $isEmptyUserResult)
					{
						$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"];
					}

				}
				$arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];
				$arProperties["VARIANTS"][] = $arVariants;
			}
			if(count($arProperties["VARIANTS"]) == 1)
			{
				$arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"];
				if($arProperties["IS_LOCATION"]=="Y")
					$arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];
				if($arProperties["IS_LOCATION4TAX"]=="Y")
					$arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];
			}
		}
	}
	elseif ($arProperties["TYPE"] == "RADIO")
	{
		$dbVariants = CSaleOrderPropsVariant::GetList(
				array("SORT" => "ASC"),
				array("ORDER_PROPS_ID" => $arProperties["ID"]),
				false,
				false,
				array("*")
			);
		while ($arVariants = $dbVariants->GetNext())
		{
			if ($arVariants["VALUE"] == $curVal || (!isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]))
			{
				$arVariants["CHECKED"]="Y";
				$arProperties["VALUE_FORMATED"] = $arVariants["NAME"];

				if ($isProfileChanged || $isEmptyUserResult)
				{
					$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arVariants["VALUE"];
				}
			}

			$arProperties["VARIANTS"][] = $arVariants;
		}
	}
	elseif ($arProperties["TYPE"] == "FILE")
	{
		$arProperties["SIZE1"] = intval($arProperties["SIZE1"]);
		$arProperties["VALUE"] = isset($curVal) ? CSaleHelper::getFileInfo($curVal) : $arProperties["DEFAULT_VALUE"];

		if ($isProfileChanged || $isEmptyUserResult)
		{
			$arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"];
		}
	}

	return $arProperties;
}
Ejemplo n.º 10
0
 static function DoProcessOrder(&$arOrder, $arOrderPropsValues, &$arErrors, &$arWarnings, $paysystemId = 0, $deliveryId = "", $arOptions = array())
 {
     if (!is_array($arOrderPropsValues)) {
         $arOrderPropsValues = array();
     }
     $arUser = null;
     $arFilter = array("PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], "ACTIVE" => "Y");
     if ($paysystemId != 0) {
         $arFilter["RELATED"]["PAYSYSTEM_ID"] = $paysystemId;
         $arFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED";
     }
     if (strlen($deliveryId) > 0) {
         $arFilter["RELATED"]["DELIVERY_ID"] = $deliveryId;
         $arFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED";
     }
     $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC"), $arFilter, false, false, array("ID", "NAME", "TYPE", "IS_LOCATION", "IS_LOCATION4TAX", "IS_PROFILE_NAME", "IS_PAYER", "IS_EMAIL", "REQUIED", "SORT", "IS_ZIP", "CODE", "DEFAULT_VALUE"));
     while ($arOrderProp = $dbOrderProps->Fetch()) {
         if (!array_key_exists($arOrderProp["ID"], $arOrderPropsValues)) {
             $curVal = $arOrderProp["DEFAULT_VALUE"];
             if (strlen($curVal) <= 0) {
                 if ($arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_PAYER"] == "Y") {
                     if ($arUser == null) {
                         $dbUser = CUser::GetList($by = "ID", $order = "desc", array("ID_EQUAL_EXACT" => $arOrder["USER_ID"]));
                         $arUser = $dbUser->Fetch();
                     }
                     if ($arOrderProp["IS_EMAIL"] == "Y") {
                         $curVal = is_array($arUser) ? $arUser["EMAIL"] : "";
                     } elseif ($arOrderProp["IS_PAYER"] == "Y") {
                         $curVal = is_array($arUser) ? $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"] : "";
                     }
                 }
             }
         } else {
             $curVal = $arOrderPropsValues[$arOrderProp["ID"]];
         }
         if (!is_array($curVal) && strlen($curVal) > 0 || is_array($curVal) && count($curVal) > 0) {
             //if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "MULTISELECT" || $arOrderProp["TYPE"] == "RADIO")
             if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") {
                 $arVariants = array();
                 $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arOrderProp["ID"]), false, false, array("*"));
                 while ($arVariant = $dbVariants->Fetch()) {
                     $arVariants[] = $arVariant["VALUE"];
                 }
                 if (!is_array($curVal)) {
                     $curVal = array($curVal);
                 }
                 $arKeys = array_keys($curVal);
                 foreach ($arKeys as $k) {
                     if (!in_array($curVal[$k], $arVariants)) {
                         unset($curVal[$k]);
                     }
                 }
                 if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") {
                     $curVal = array_shift($curVal);
                 }
             } elseif ($arOrderProp["TYPE"] == "LOCATION") {
                 if (is_array($curVal)) {
                     $curVal = array_shift($curVal);
                 }
                 if (CSaleLocation::isLocationProMigrated()) {
                     // if we came from places like CRM, we got location in CODEs, because CRM knows nothing about location IDs.
                     // so, CRM sends LOCATION_IN_CODES in options array. In the other case, we assume we got locations as IDs
                     $res = CSaleLocation::GetById($curVal);
                     if (intval($res['ID'])) {
                         $curVal = $res['ID'];
                         $locId = $res['ID'];
                     } else {
                         $curVal = null;
                         $locId = false;
                     }
                 } else {
                     $dbVariants = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID"));
                     if ($arVariant = $dbVariants->Fetch()) {
                         $curVal = intval($arVariant["ID"]);
                     } else {
                         $curVal = null;
                     }
                 }
             }
         }
         if ($arOrderProp["TYPE"] == "LOCATION" && ($arOrderProp["IS_LOCATION"] == "Y" || $arOrderProp["IS_LOCATION4TAX"] == "Y")) {
             if ($arOrderProp["IS_LOCATION"] == "Y") {
                 $arOrder["DELIVERY_LOCATION"] = $locId;
             }
             if ($arOrderProp["IS_LOCATION4TAX"] == "Y") {
                 $arOrder["TAX_LOCATION"] = $locId;
             }
             if (!$locId) {
                 $bErrorField = true;
             }
         } elseif ($arOrderProp["IS_PROFILE_NAME"] == "Y" || $arOrderProp["IS_PAYER"] == "Y" || $arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_ZIP"] == "Y") {
             $curVal = trim($curVal);
             if ($arOrderProp["IS_PROFILE_NAME"] == "Y") {
                 $arOrder["PROFILE_NAME"] = $curVal;
             }
             if ($arOrderProp["IS_PAYER"] == "Y") {
                 $arOrder["PAYER_NAME"] = $curVal;
             }
             if ($arOrderProp["IS_ZIP"] == "Y") {
                 $arOrder["DELIVERY_LOCATION_ZIP"] = $curVal;
             }
             if ($arOrderProp["IS_EMAIL"] == "Y") {
                 $arOrder["USER_EMAIL"] = $curVal;
                 if (!check_email($curVal)) {
                     $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace(array("#EMAIL#", "#NAME#"), array(htmlspecialcharsbx($curVal), htmlspecialcharsbx($arOrderProp["NAME"])), GetMessage("SALE_GOPE_WRONG_EMAIL")));
                 }
             }
             if (strlen($curVal) <= 0) {
                 $bErrorField = true;
             }
         } elseif ($arOrderProp["REQUIED"] == "Y") {
             if ($arOrderProp["TYPE"] == "TEXT" || $arOrderProp["TYPE"] == "TEXTAREA" || $arOrderProp["TYPE"] == "RADIO" || $arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "CHECKBOX") {
                 if (strlen($curVal) <= 0) {
                     $bErrorField = true;
                 }
             } elseif ($arOrderProp["TYPE"] == "LOCATION") {
                 if (intval($curVal) <= 0) {
                     $bErrorField = true;
                 }
             } elseif ($arOrderProp["TYPE"] == "MULTISELECT") {
                 //if (!is_array($curVal) || count($curVal) <= 0)
                 if (strlen($curVal) <= 0) {
                     $bErrorField = true;
                 }
             } elseif ($arOrderProp["TYPE"] == "FILE") {
                 if (is_array($curVal)) {
                     foreach ($curVal as $index => $arFileData) {
                         if (!array_key_exists("name", $arFileData) && !array_key_exists("file_id", $arFileData)) {
                             $bErrorField = true;
                         }
                     }
                 } else {
                     $bErrorField = true;
                 }
             }
         }
         if ($bErrorField) {
             $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace("#NAME#", htmlspecialcharsbx($arOrderProp["NAME"]), GetMessage("SALE_GOPE_FIELD_EMPTY")));
             $bErrorField = false;
         }
         $arOrder["ORDER_PROP"][$arOrderProp["ID"]] = $curVal;
     }
 }
Ejemplo n.º 11
0
// input settings
$inputSettings = Input\Manager::getSettings($property, $reload);
if (isset($resetInputSettings)) {
    unset($property['DEFAULT_VALUE'], $property['SETTINGS']);
    $property = array_diff_key($property, $inputSettings);
    if ($propertyId && $existentProperty && $property['TYPE'] == $existentProperty['TYPE']) {
        $property['MULTIPLE'] = $existentProperty['MULTIPLE'];
        $property['DEFAULT_VALUE'] = $existentProperty['DEFAULT_VALUE'];
        $property += $existentProperty['SETTINGS'];
    }
}
// load property metadata
switch ($property['TYPE']) {
    case 'ENUM':
        if (!$variants) {
            $result = CSaleOrderPropsVariant::GetList($b = 'SORT', $o = 'ASC', array('ORDER_PROPS_ID' => $propertyId));
            while ($row = $result->Fetch()) {
                $variants[] = $row;
            }
        }
        break;
    case 'FILE':
        $property['DEFAULT_VALUE'] = Input\File::loadInfo($property['DEFAULT_VALUE']);
        break;
}
// variant settings
$variantSettings = array('VALUE' => array('TYPE' => 'STRING', 'LABEL' => Loc::getMessage('SALE_VARIANTS_CODE'), 'SIZE' => '5', 'MAXLENGTH' => 255, 'REQUIRED' => 'Y'), 'NAME' => array('TYPE' => 'STRING', 'LABEL' => Loc::getMessage('SALE_VARIANTS_NAME'), 'SIZE' => '20', 'MAXLENGTH' => 255, 'REQUIRED' => 'Y'), 'SORT' => array('TYPE' => 'NUMBER', 'LABEL' => Loc::getMessage('SALE_VARIANTS_SORT'), 'MIN' => 0, 'STEP' => 1, 'VALUE' => 100), 'DESCRIPTION' => array('TYPE' => 'STRING', 'LABEL' => Loc::getMessage('SALE_VARIANTS_DESCR'), 'SIZE' => '30', 'MAXLENGTH' => 255), 'ID' => array('TYPE' => 'NUMBER', 'MIN' => 0, 'STEP' => 1, 'HIDDEN' => 'Y'));
// common settings
$groupOptions = array();
$result = \CSaleOrderPropsGroup::GetList($b = "NAME", $o = "ASC", array('PERSON_TYPE_ID' => $personTypeId));
while ($row = $result->Fetch()) {
Ejemplo n.º 12
0
function fGetBuyerType($PERSON_TYPE_ID, $LID, $USER_ID = '', $ORDER_ID = 0, $formVarsSubmit = false)
{
    global $locationZipID, $locationID, $DELIVERY_LOCATION, $DELIVERY_LOCATION_ZIP;
    $resultHtml = "<script>locationZipID = 0;locationID = 0;</script><table width=\"100%\" id=\"order_type_props\" class=\"edit-table\">";
    //select person type
    $arPersonTypeList = array();
    $personTypeSelect = "<select name='buyer_type_id' id='buyer_type_id' OnChange='fBuyerChangeType(this);' >";
    $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y"));
    while ($arPersonType = $dbPersonType->GetNext()) {
        if (!in_array($LID, $arPersonType["LIDS"])) {
            continue;
        }
        if (!isset($PERSON_TYPE_ID) or $PERSON_TYPE_ID == "") {
            $PERSON_TYPE_ID = $arPersonType["ID"];
        }
        $class = "";
        if (IntVal($arPersonType["ID"]) == IntVal($PERSON_TYPE_ID)) {
            $class = " selected";
        }
        $personTypeSelect .= "<option value=\"" . $arPersonType["ID"] . "\" " . $class . ">" . $arPersonType["NAME"] . " [" . $arPersonType["ID"] . "]</option>";
    }
    $personTypeSelect .= "</select>";
    $userComment = "";
    $userDisplay = "none";
    if (IntVal($ORDER_ID) > 0) {
        $dbOrder = CSaleOrder::GetList(array(), array("ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array());
        $arOrder = $dbOrder->Fetch();
        $userComment = $arOrder["USER_DESCRIPTION"];
        $userDisplay = "table-row";
    }
    if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerNew") {
        $userDisplay = "none";
    } elseif ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") {
        $userDisplay = "table-row";
    }
    $resultHtml .= "<tr id=\"btnBuyerExistField\" style=\"display:" . $userDisplay . "\">\n\t\t\t<td class=\"adm-detail-content-cell-l\" width=\"40%\">" . GetMessage("NEWO_BUYER") . ":</td>\n\t\t\t<td class=\"adm-detail-content-cell-r\" width=\"60%\"><div id=\"user_name\">" . fGetUserName($USER_ID) . "</div></td></tr>";
    $resultHtml .= "<tr class=\"adm-detail-required-field\">\n\t\t<td class=\"adm-detail-content-cell-l\" width=\"40%\">" . GetMessage("SOE_PERSON_TYPE") . ":</td>\n\t\t<td class=\"adm-detail-content-cell-r\" width=\"60%\">" . $personTypeSelect . "</td>\n\t</tr>";
    $bShowTrProfile = "none";
    if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") {
        $bShowTrProfile = "table-row";
    }
    $resultHtml .= "<tr id=\"buyer_profile_display\" style=\"display:" . $bShowTrProfile . "\" class=\"adm-detail-required-field\">\n\t\t<td class=\"adm-detail-content-cell-l\">" . GetMessage("NEWO_BUYER_PROFILE") . ":</td>\n\t\t<td class=\"adm-detail-content-cell-r\">\n\t\t\t<div id=\"buyer_profile_select\">";
    if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") {
        $resultHtml .= fUserProfile(IntVal($_POST["user_id"]), IntVal($_POST["buyer_type_id"]), $default = '');
    }
    $resultHtml .= "</div></td>\n\t</tr>";
    if ($ORDER_ID <= 0) {
        $arCountProps = fGetCountProfileProps($PERSON_TYPE_ID);
        $resultHtml .= "<tr id=\"btnBuyerNewField\">";
        if (count($arCountProps) < 3) {
            $resultHtml .= "<td colspan=2>\n\t\t\t\t\t<table width=\"100%\" class=\"edit-table\" >";
            if (IntVal($arCountProps["IS_EMAIL"]) <= 0) {
                $resultHtml .= "<tr class=\"adm-detail-required-field\">\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-l\" width=\"40%\">" . GetMessage("NEWO_BUYER_REG_MAIL") . "</td>\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_EMAIL\" size=\"30\" value=\"" . htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_EMAIL"])) . "\" tabindex=\"1\" /></td>\n\t\t\t\t\t\t</tr>";
            }
            if (IntVal($arCountProps["IS_PAYER"]) <= 0) {
                $resultHtml .= "<tr class=\"adm-detail-required-field\">\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-l\">" . GetMessage("NEWO_BUYER_REG_LASTNAME") . "</td>\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_LAST_NAME\" size=\"30\" value=\"" . htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_LAST_NAME"])) . "\" tabindex=\"3\" /></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class=\"adm-detail-required-field\">\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-l\">" . GetMessage("NEWO_BUYER_REG_NAME") . "</td>\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_NAME\" size=\"30\" value=\"" . htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_NAME"])) . "\" tabindex=\"2\" /></td>\n\t\t\t\t\t\t</tr>";
            }
            $resultHtml .= "</table>\n\t\t\t\t</td>";
        }
        $resultHtml .= "</tr>";
    }
    $arPropValues = array();
    if ($formVarsSubmit) {
        $locationIndexForm = "";
        foreach ($_POST as $key => $value) {
            if (substr($key, 0, strlen("CITY_ORDER_PROP_")) == "CITY_ORDER_PROP_") {
                $arPropValues[IntVal(substr($key, strlen("CITY_ORDER_PROP_")))] = htmlspecialcharsbx($value);
                $locationIndexForm = IntVal(substr($key, strlen("CITY_ORDER_PROP_")));
            }
            if (substr($key, 0, strlen("ORDER_PROP_")) == "ORDER_PROP_") {
                if ($locationIndexForm != IntVal(substr($key, strlen("ORDER_PROP_")))) {
                    $arPropValues[IntVal(substr($key, strlen("ORDER_PROP_")))] = htmlspecialcharsbx($value);
                }
            }
        }
        $userComment = $_POST["USER_DESCRIPTION"];
    } elseif ($ORDER_ID == "" and $USER_ID != "") {
        //profile
        $userProfile = array();
        $userProfile = CSaleOrderUserProps::DoLoadProfiles($USER_ID, $PERSON_TYPE_ID);
        $arPropValues = $userProfile[$PERSON_TYPE_ID]["VALUES"];
    } elseif ($ORDER_ID != "") {
        $dbPropValuesList = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array("ID", "ORDER_PROPS_ID", "NAME", "VALUE", "CODE"));
        while ($arPropValuesList = $dbPropValuesList->Fetch()) {
            $arPropValues[IntVal($arPropValuesList["ORDER_PROPS_ID"])] = htmlspecialcharsbx($arPropValuesList["VALUE"]);
        }
    }
    //select field (town) for disable
    $arDisableFieldForLocation = array();
    $dbProperties = CSaleOrderProps::GetList(array(), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y", ">INPUT_FIELD_LOCATION" => 0), false, false, array("INPUT_FIELD_LOCATION"));
    while ($arProperties = $dbProperties->Fetch()) {
        $arDisableFieldForLocation[$arProperties["INPUT_FIELD_LOCATION"]] = $arProperties["INPUT_FIELD_LOCATION"];
    }
    //show town if location is another
    $arEnableTownProps = array();
    $dbOrderProps = CSaleOrderPropsValue::GetOrderProps($ORDER_ID);
    while ($arOrderProps = $dbOrderProps->Fetch()) {
        if ($arOrderProps["TYPE"] == "LOCATION" && $arOrderProps["ACTIVE"] == "Y" && $arOrderProps["IS_LOCATION"] == "Y" && in_array($arOrderProps["INPUT_FIELD_LOCATION"], $arDisableFieldForLocation)) {
            $arLocation = CSaleLocation::GetByID($arPropValues[$arOrderProps["ORDER_PROPS_ID"]]);
            if (IntVal($arLocation["CITY_ID"]) <= 0) {
                unset($arDisableFieldForLocation[$arOrderProps["INPUT_FIELD_LOCATION"]]);
            }
        }
    }
    $dbProperties = CSaleOrderProps::GetList(array("GROUP_SORT" => "ASC", "PROPS_GROUP_ID" => "ASC", "SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y"), false, false, array("*"));
    $propertyGroupID = -1;
    while ($arProperties = $dbProperties->Fetch()) {
        if (IntVal($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) {
            $resultHtml .= "<tr><td colspan=\"2\" style=\"text-align:center;font-weight:bold;font-size:14px;color:rgb(75, 98, 103);\" >" . htmlspecialcharsEx($arProperties["GROUP_NAME"]) . "\n</td>\n</tr>";
            $propertyGroupID = IntVal($arProperties["PROPS_GROUP_ID"]);
        }
        if (IntVal($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) {
            $propertyGroupID = IntVal($arProperties["PROPS_GROUP_ID"]);
        }
        $adit = "";
        $requiredField = "";
        if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") {
            $adit = " class=\"adm-detail-required-field\"";
            $requiredField = " class=\"adm-detail-content-cell-l\"";
        }
        //delete town from location
        if (in_array($arProperties["ID"], $arDisableFieldForLocation)) {
            $resultHtml .= "<tr style=\"display:none;\" id=\"town_location_" . $arProperties["ID"] . "\"" . $adit . ">\n";
        } else {
            $resultHtml .= "<tr id=\"town_location_" . $arProperties["ID"] . "\"" . $adit . ">\n";
        }
        if ($arProperties["TYPE"] == "MULTISELECT" || $arProperties["TYPE"] == "TEXTAREA" || $ORDER_ID <= 0 && $arProperties["IS_PROFILE_NAME"] == "Y") {
            $resultHtml .= "<td valign=\"top\" class=\"adm-detail-content-cell-l\" width=\"40%\">\n";
        } else {
            $resultHtml .= "<td align=\"right\" width=\"40%\" " . $requiredField . ">\n";
        }
        $resultHtml .= htmlspecialcharsEx($arProperties["NAME"]) . ":</td>";
        $curVal = $arPropValues[IntVal($arProperties["ID"])];
        if ($arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PAYER"] == "Y") {
            if (strlen($arProperties["DEFAULT_VALUE"]) <= 0 && IntVal($USER_ID) > 0) {
                $rsUser = CUser::GetByID($USER_ID);
                if ($arUser = $rsUser->Fetch()) {
                    if ($arProperties["IS_EMAIL"] == "Y") {
                        $arProperties["DEFAULT_VALUE"] = $arUser["EMAIL"];
                    } else {
                        if (strlen($arUser["LAST_NAME"]) > 0) {
                            $arProperties["DEFAULT_VALUE"] .= $arUser["LAST_NAME"];
                        }
                        if (strlen($arUser["NAME"]) > 0) {
                            $arProperties["DEFAULT_VALUE"] .= " " . $arUser["NAME"];
                        }
                        if (strlen($arUser["SECOND_NAME"]) > 0 and strlen($arUser["NAME"]) > 0) {
                            $arProperties["DEFAULT_VALUE"] .= " " . $arUser["SECOND_NAME"];
                        }
                    }
                }
            }
        }
        $resultHtml .= "<td class=\"adm-detail-content-cell-r\" width=\"60%\">";
        if ($arProperties["TYPE"] == "CHECKBOX") {
            $resultHtml .= '<input type="checkbox" class="inputcheckbox" ';
            $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" value="Y"';
            $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" ';
            if ($curVal == "Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"] == "Y") {
                $resultHtml .= " checked";
            }
            $resultHtml .= '>';
        } elseif ($arProperties["TYPE"] == "TEXT") {
            $change = "";
            if ($arProperties["IS_ZIP"] == "Y") {
                $DELIVERY_LOCATION_ZIP = $curVal;
                $resultHtml .= '<script> locationZipID = \'' . $arProperties["ID"] . '\';</script>';
                $locationZipID = isset($curVal) ? htmlspecialcharsEx($curVal) : htmlspecialcharsex($arProperties["DEFAULT_VALUE"]);
            }
            if ($arProperties["IS_PAYER"] == "Y" && IntVal($USER_ID) <= 0) {
                $resultHtml .= '<div id="BREAK_NAME"';
                if ($ORDER_ID > 0 || $formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") {
                    $resultHtml .= ' style="display:none"';
                }
                $resultHtml .= '>';
                $BREAK_LAST_NAME_TMP = GetMessage('NEWO_BREAK_LAST_NAME');
                if (isset($_REQUEST["BREAK_LAST_NAME"]) && strlen($_REQUEST["BREAK_LAST_NAME"]) > 0) {
                    $BREAK_LAST_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_LAST_NAME"]));
                }
                $NEWO_BREAK_NAME_TMP = GetMessage('NEWO_BREAK_NAME');
                if (isset($_REQUEST["BREAK_NAME"]) && strlen($_REQUEST["BREAK_NAME"]) > 0) {
                    $NEWO_BREAK_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_NAME"]));
                }
                $BREAK_SECOND_NAME_TMP = GetMessage('NEWO_BREAK_SECOND_NAME');
                if (isset($_REQUEST["BREAK_SECOND_NAME"]) && strlen($_REQUEST["BREAK_SECOND_NAME"]) > 0) {
                    $BREAK_SECOND_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_SECOND_NAME"]));
                }
                $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='" . GetMessage('NEWO_BREAK_LAST_NAME') . "';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='" . GetMessage('NEWO_BREAK_LAST_NAME') . "') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_LAST_NAME\" id=\"BREAK_LAST_NAME\" size=\"30\" value=\"" . $BREAK_LAST_NAME_TMP . "\" /></div>";
                $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='" . GetMessage('NEWO_BREAK_NAME') . "';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='" . GetMessage('NEWO_BREAK_NAME') . "') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_NAME\" id=\"BREAK_NAME_BUYER\" size=\"30\" value=\"" . $NEWO_BREAK_NAME_TMP . "\" /></div>";
                $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='" . GetMessage('NEWO_BREAK_SECOND_NAME') . "';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='" . GetMessage('NEWO_BREAK_SECOND_NAME') . "') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_SECOND_NAME\" id=\"BREAK_SECOND_NAME\" size=\"30\" value=\"" . $BREAK_SECOND_NAME_TMP . "\" /></div>";
                $resultHtml .= '</div>';
                $resultHtml .= '<div id="NO_BREAK_NAME"';
                if ($ORDER_ID <= 0) {
                    $tmpNone = ' style="display:none"';
                }
                if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") {
                    $tmpNone = ' style="display:block"';
                }
                $resultHtml .= $tmpNone . '>';
            }
            $resultHtml .= '<input type="text" maxlength="250" ';
            $resultHtml .= 'size="30" ';
            $resultHtml .= 'value="' . (isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]) . '" ';
            $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" ';
            $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" ' . $change . '>';
            if ($arProperties["IS_PAYER"] == "Y" && IntVal($USER_ID) <= 0) {
                $resultHtml .= '</div>';
            }
        } elseif ($arProperties["TYPE"] == "SELECT") {
            $resultHtml .= '<select name="ORDER_PROP_' . $arProperties["ID"] . '" ';
            $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" ';
            $resultHtml .= 'size="5" ';
            $resultHtml .= 'class="typeselect">';
            $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*"));
            while ($arVariants = $dbVariants->Fetch()) {
                $resultHtml .= '<option value="' . htmlspecialcharsex($arVariants["VALUE"]) . '"';
                if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) {
                    $resultHtml .= " selected";
                }
                $resultHtml .= '>' . htmlspecialcharsEx($arVariants["NAME"]) . '</option>';
            }
            $resultHtml .= '</select>';
        } elseif ($arProperties["TYPE"] == "MULTISELECT") {
            $resultHtml .= '<select multiple name="ORDER_PROP_' . $arProperties["ID"] . '[]" ';
            $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" ';
            $resultHtml .= 'size="5" ';
            $resultHtml .= 'class="typeselect" type="multyselect">';
            if (!is_array($curVal)) {
                if (strlen($curVal) > 0 or $ORDER_ID != "") {
                    $curVal = explode(",", $curVal);
                } else {
                    $curVal = explode(",", $arProperties["DEFAULT_VALUE"]);
                }
                $arCurVal = array();
                $countCurVal = count($curVal);
                for ($i = 0; $i < $countCurVal; $i++) {
                    $arCurVal[$i] = Trim($curVal[$i]);
                }
            } else {
                $arCurVal = $curVal;
            }
            $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*"));
            while ($arVariants = $dbVariants->Fetch()) {
                $resultHtml .= '<option value="' . htmlspecialcharsex($arVariants["VALUE"]) . '"';
                if (in_array($arVariants["VALUE"], $arCurVal)) {
                    $resultHtml .= " selected";
                }
                $resultHtml .= '>' . htmlspecialcharsEx($arVariants["NAME"]) . '</option>';
            }
            $resultHtml .= '</select>';
        } elseif ($arProperties["TYPE"] == "TEXTAREA") {
            $resultHtml .= '<textarea ';
            $resultHtml .= 'rows="4" ';
            $resultHtml .= 'cols="40" ';
            $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" ';
            $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" type="textarea">';
            $resultHtml .= isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"];
            $resultHtml .= '</textarea>';
        } elseif ($arProperties["TYPE"] == "LOCATION") {
            $countryID = "";
            $cityID = "";
            $cityList = "";
            $DELIVERY_LOCATION = $arPropValues[IntVal($arProperties["ID"])];
            $locationID = $curVal;
            $tmpLocation = '';
            ob_start();
            $tmpLocation = $GLOBALS["APPLICATION"]->IncludeComponent('bitrix:sale.ajax.locations', '', array("SITE_ID" => $LID, "AJAX_CALL" => "N", "COUNTRY_INPUT_NAME" => "ORDER_PROP_" . $arProperties["ID"], "REGION_INPUT_NAME" => "REGION_ORDER_PROP_" . $arProperties["ID"], "CITY_INPUT_NAME" => "CITY_ORDER_PROP_" . $arProperties["ID"], "CITY_OUT_LOCATION" => "Y", "ALLOW_EMPTY_CITY" => "Y", "LOCATION_VALUE" => $curVal, "COUNTRY" => "", "ONCITYCHANGE" => "fRecalProduct('', '', 'N');", "PUBLIC" => "N"), null, array('HIDE_ICONS' => 'Y'));
            $tmpLocation = ob_get_contents();
            ob_end_clean();
            $resultHtml .= '<script>var locationID = \'' . $arProperties["ID"] . '\';</script>';
            $resultHtml .= $tmpLocation;
        } elseif ($arProperties["TYPE"] == "RADIO") {
            $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*"));
            $resultHtml .= '<div id="ORDER_PROP_' . $arProperties["ID"] . '">';
            // type="radio"
            while ($arVariants = $dbVariants->Fetch()) {
                $resultHtml .= '<input type="radio" class="inputradio" ';
                $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" ';
                $resultHtml .= 'value="' . htmlspecialcharsex($arVariants["VALUE"]) . '"';
                if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) {
                    $resultHtml .= " checked";
                }
                $resultHtml .= '>' . htmlspecialcharsEx($arVariants["NAME"]) . '<br>';
            }
            $resultHtml .= '</div>';
        }
        if (strlen($arProperties["DESCRIPTION"]) > 0) {
            $resultHtml .= "<br><small>" . htmlspecialcharsEx($arProperties["DESCRIPTION"]) . "</small>";
        }
        $resultHtml .= "\n</td>\n</tr>";
    }
    //end while
    $resultHtml .= "<tr>\n<td valign=\"top\" class=\"adm-detail-content-cell-l\">" . GetMessage("SOE_BUYER_COMMENT") . ":\n\t\t\t</td>\n\t\t\t<td class=\"adm-detail-content-cell-r\">\n\t\t\t\t<textarea name=\"USER_DESCRIPTION\" rows=\"4\" cols=\"40\">" . htmlspecialcharsbx($userComment) . "</textarea>\n\t\t\t</td>\n\t\t</tr>";
    $resultHtml .= "</table>";
    return $resultHtml;
}
Ejemplo n.º 13
0
                ?>
</option><?php 
            }
            ?>
						</select>
						<?php 
        } elseif ($value["TYPE"] == "RADIO") {
            ?>
<input type="radio" name="filter_prop_<?php 
            echo $key;
            ?>
" value=""><?php 
            echo GetMessage("SALE_F_ALL");
            ?>
<br /><?php 
            $db_vars = CSaleOrderPropsVariant::GetList($by = "SORT", $order = "ASC", array("ORDER_PROPS_ID" => $value["ID"]));
            while ($vars = $db_vars->Fetch()) {
                ?>
<input type="radio" name="filter_prop_<?php 
                echo $key;
                ?>
" value="<?php 
                echo $vars["VALUE"];
                ?>
"<?php 
                if ($vars["VALUE"] == $curVal) {
                    echo " checked";
                }
                ?>
><?php 
                echo htmlspecialcharsbx($vars["NAME"]);
Ejemplo n.º 14
0
function getOrderPropFormated($arProperties, $arResult, &$arUserResult, &$arDeleteFieldLocation = array())
{
	global $USER;

	$curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]];
	$curLocation = false;
	static $propertyGroupID = 0;
	static $propertyUSER_PROPS = "";

	// take data from user profile
	if ($arUserResult["PROFILE_CHANGE"] == "Y"
		&& intval($arUserResult["PROFILE_ID"]) > 0
		&& !($arResult["HAVE_PREPAYMENT"]
		&& $arUserResult["PROFILE_DEFAULT"] == "Y"
		&& !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]])))
	{
		$dbUserPropsValues = CSaleOrderUserPropsValue::GetList(
			array("SORT" => "ASC"),
			array(
				"USER_PROPS_ID" => $arUserResult["PROFILE_ID"],
				"ORDER_PROPS_ID" => $arProperties["ID"],
				"USER_ID" => intval($USER->GetID()),
			),
			false,
			false,
			array("VALUE", "PROP_TYPE", "VARIANT_NAME", "SORT", "ORDER_PROPS_ID")
		);
		if ($arUserPropsValues = $dbUserPropsValues->Fetch())
		{
			$valueTmp = "";
			if ($arUserPropsValues["PROP_TYPE"] == "MULTISELECT")
			{
				$arUserPropsValues["VALUE"] = explode(",", $arUserPropsValues["VALUE"]);
			}
			$curVal = $arUserPropsValues["VALUE"];

			if(CSaleLocation::isLocationProMigrated())
			{
				if($arProperties['TYPE'] == 'LOCATION')
					$curVal = CSaleLocation::getLocationIDbyCODE($curVal);
			}
		}
	}
	elseif($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) <= 0)
	{
		if (isset($curVal))
			unset($curVal);
	}
	elseif(isset($arUserResult["ORDER_PROP"][$arProperties["ID"]]))
		$curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]];
	elseif($arResult["HAVE_PREPAYMENT"] && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]))
	{
		$curVal = $arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]];
		if($arProperties["TYPE"] == "LOCATION")
			$curLocation = $curVal;
	}

	if (intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]) > 0)
		$curVal = intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]);

	$arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"];

	if(strlen($arProperties["CODE"]) > 0)
		$arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["CODE"];
	else
		$arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["ID"];

	if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID || $propertyUSER_PROPS != $arProperties["USER_PROPS"])
		$arProperties["SHOW_GROUP_NAME"] = "Y";

	$propertyGroupID = $arProperties["PROPS_GROUP_ID"];
	$propertyUSER_PROPS = $arProperties["USER_PROPS"];

	if ($arProperties["REQUIED"]=="Y" || $arProperties["IS_EMAIL"]=="Y" || $arProperties["IS_PROFILE_NAME"]=="Y" || $arProperties["IS_LOCATION"]=="Y" || $arProperties["IS_LOCATION4TAX"]=="Y" || $arProperties["IS_PAYER"]=="Y" || $arProperties["IS_ZIP"]=="Y")
		$arProperties["REQUIED_FORMATED"]="Y";

	if ($arProperties["TYPE"] == "CHECKBOX")
	{
		if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y")
		{
			$arProperties["CHECKED"] = "Y";
			$arProperties["VALUE_FORMATED"] = GetMessage("SOA_Y");
		}
		else
			$arProperties["VALUE_FORMATED"] = GetMessage("SOA_N");

		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 30);
	}
	elseif ($arProperties["TYPE"] == "TEXT")
	{
		if (strlen($curVal) <= 0)
		{
			if(strlen($arProperties["DEFAULT_VALUE"])>0 && !isset($curVal))
				$arProperties["VALUE"] = $arProperties["DEFAULT_VALUE"];
			elseif ($arProperties["IS_EMAIL"] == "Y")
				$arProperties["VALUE"] = $USER->GetEmail();
			elseif ($arProperties["IS_PAYER"] == "Y")
			{
				//$arProperties["VALUE"] = $USER->GetFullName();
				$rsUser = CUser::GetByID($USER->GetID());
				$fio = "";
				if ($arUser = $rsUser->Fetch())
				{
					$fio = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"]), false, false);
				}
				$arProperties["VALUE"] = $fio;
			}

			$arProperties["SOURCE"] = 'DEFAULT';
		}
		else
		{
			$arProperties["VALUE"] = $curVal;
			$arProperties["SOURCE"] = 'FORM';
		}

		//select ZIP for LOCATION
		if ($arProperties["IS_ZIP"] == "Y" && $arUserResult["PROFILE_CHANGE"] == "N")
		{
			$dbPropertiesLoc = CSaleOrderProps::GetList(
					array("ID" => "DESC"),
					array(
						"PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"],
						"ACTIVE" => "Y",
						"UTIL" => "N",
						"IS_LOCATION" => "Y"
						),
					false,
					false,
					array("ID")
				);
			$arPropertiesLoc = $dbPropertiesLoc->Fetch();

			if ($arPropertiesLoc["ID"] > 0)
			{
				$arZipLocation = array();
				if(strlen($curVal) > 0)
					$arZipLocation = CSaleLocation::GetByZIP($curVal);

				$rsZipList = CSaleLocation::GetLocationZIP($arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]);
				if($arZip = $rsZipList->Fetch())
				{
					if (strlen($arZip["ZIP"]) > 0 && (empty($arZipLocation) || $arZipLocation["ID"] != $arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]))
						$arProperties["VALUE"] = $arZip["ZIP"];
				}
			}
		}

		if ($arProperties["IS_ZIP"]=="Y")
			$arUserResult["DELIVERY_LOCATION_ZIP"] = $arProperties["VALUE"];


		$arProperties["VALUE"] = htmlspecialcharsEx($arProperties["VALUE"]);
		$arProperties["VALUE_FORMATED"] = $arProperties["VALUE"];

	}
	elseif ($arProperties["TYPE"] == "SELECT")
	{
		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1);
		$dbVariants = CSaleOrderPropsVariant::GetList(
				array("SORT" => "ASC", "NAME" => "ASC"),
				array("ORDER_PROPS_ID" => $arProperties["ID"]),
				false,
				false,
				array("*")

		);
		$flagDefault = "N";
		$nameProperty = "";
		while ($arVariants = $dbVariants->GetNext())
		{
			if ($flagDefault == "N" && $nameProperty == "")
			{
				$nameProperty = $arVariants["NAME"];
			}
			if (($arVariants["VALUE"] == $curVal) || ((!isset($curVal) || $curVal == "") && ($arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"])))
			{
				$arVariants["SELECTED"] = "Y";
				$arProperties["VALUE_FORMATED"] = $arVariants["NAME"];
				$flagDefault = "Y";
			}
			$arProperties["VARIANTS"][] = $arVariants;
		}
		if ($flagDefault == "N")
		{
			$arProperties["VARIANTS"][0]["SELECTED"]= "Y";
			$arProperties["VARIANTS"][0]["VALUE_FORMATED"] = $nameProperty;
		}
	}
	elseif ($arProperties["TYPE"] == "MULTISELECT")
	{
		$arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"].'[]';
		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 5);
		$arDefVal = explode(",", $arProperties["DEFAULT_VALUE"]);
		$countDefVal = count($arDefVal);
		for ($i = 0; $i < $countDefVal; $i++)
			$arDefVal[$i] = Trim($arDefVal[$i]);

		$dbVariants = CSaleOrderPropsVariant::GetList(
				array("SORT" => "ASC"),
				array("ORDER_PROPS_ID" => $arProperties["ID"]),
				false,
				false,
				array("*")
			);
		$i = 0;
		while ($arVariants = $dbVariants->GetNext())
		{
			if ((is_array($curVal) && in_array($arVariants["VALUE"], $curVal)) || (!isset($curVal) && in_array($arVariants["VALUE"], $arDefVal)))
			{
				$arVariants["SELECTED"] = "Y";
				if ($i > 0)
					$arProperties["VALUE_FORMATED"] .= ", ";
				$arProperties["VALUE_FORMATED"] .= $arVariants["NAME"];
				$i++;
			}
			$arProperties["VARIANTS"][] = $arVariants;
		}
	}
	elseif ($arProperties["TYPE"] == "TEXTAREA")
	{
		$arProperties["SIZE2"] = ((intval($arProperties["SIZE2"]) > 0) ? $arProperties["SIZE2"] : 4);
		$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 40);
		$arProperties["VALUE"] = htmlspecialcharsEx(isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]);
		$arProperties["VALUE_FORMATED"] = $arProperties["VALUE"];
	}
	elseif ($arProperties["TYPE"] == "LOCATION")
	{
		if(CSaleLocation::isLocationProEnabled())
		{
			if(!strlen($curVal) && strlen($arProperties["DEFAULT_VALUE"]))
				$curVal = CSaleLocation::getLocationIDbyCODE($arProperties["DEFAULT_VALUE"]);

			//enable location town text
			if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_".$arProperties["ID"]]))
			{
				if(isset($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'][$arProperties["ID"]])) // look at the manual flag
				{
					if($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'][$arProperties["ID"]]) // if it set to TRUE, show alt location
						unset($arDeleteFieldLocation[$arProperties["ID"]]);
					else
						$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; // otherwise, hide
				}
				else
				{
					// now we have no had-coded type-table for locations, so turn this logic on only when there is "CITY" type
					if(!CSaleLocation::checkLocationIsAboveCity($curVal))
					{
						$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; // remove by default
					}
					else
					{
						unset($arDeleteFieldLocation[$arProperties["ID"]]);
					}
				}
			}
			elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0)
			{
				$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
			}

			$arProperties["VALUE"] = $curVal;

			#######################
			#######################
			#######################
			# here we sacrifice perfromance for the sake of compatibility

			$arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];

			if($arProperties["IS_LOCATION4TAX"]=="Y")
				$arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];

			// variants
			$locationFound = false;
			$dbVariants = CSaleLocation::GetList(
					array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"),
					array("LID" => LANGUAGE_ID),
					false,
					false,
					array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG")
				);
			while ($arVariants = $dbVariants->GetNext())
			{
				if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"])))
				{
					$locationFound = true;
					$arVariants["SELECTED"] = "Y";
					$arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];
				}
				$arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];
				$arProperties["VARIANTS"][] = $arVariants;
			}

			// this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"]
			if(!$locationFound && IntVal($curVal))
			{
				$item = CSaleLocation::GetById($curVal);
				if($item)
				{
					$item['NAME'] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];
					$item['SELECTED'] = 'Y';
					$arProperties["VARIANTS"][] = $item;
				}
			}
		}
		else
		{
			//enable location town text
			if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_".$arProperties["ID"]]))
			{
				$rsLocationsList = CSaleLocation::GetList(
					array(),
					array("ID" => $curVal),
					false,
					false,
					array("ID", "CITY_ID")
				);
				$arCity = $rsLocationsList->GetNext();

				if (intval($arCity["CITY_ID"]) <= 0)
					unset($arDeleteFieldLocation[$arProperties["ID"]]);
				else
					$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
			}
			elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0)
			{
				$arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"];
			}

			$arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1);
			$dbVariants = CSaleLocation::GetList(
					array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"),
					array("LID" => LANGUAGE_ID),
					false,
					false,
					array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG")
				);
			while ($arVariants = $dbVariants->GetNext())
			{
				if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"])))
				{
					$arVariants["SELECTED"] = "Y";
					$arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];
					$arProperties["VALUE"] = $arVariants["ID"];

					if ($arProperties["IS_LOCATION"]=="Y")
						$arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];
					if ($arProperties["IS_LOCATION4TAX"]=="Y")
						$arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];

				}
				$arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"];
				$arProperties["VARIANTS"][] = $arVariants;
			}
			if(count($arProperties["VARIANTS"]) == 1)
			{
				$arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"];
				if($arProperties["IS_LOCATION"]=="Y")
					$arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"];
				if($arProperties["IS_LOCATION4TAX"]=="Y")
					$arUserResult["TAX_LOCATION"] = $arProperties["VALUE"];
			}
		}
	}
	elseif ($arProperties["TYPE"] == "RADIO")
	{
		$dbVariants = CSaleOrderPropsVariant::GetList(
				array("SORT" => "ASC"),
				array("ORDER_PROPS_ID" => $arProperties["ID"]),
				false,
				false,
				array("*")
			);
		while ($arVariants = $dbVariants->GetNext())
		{
			if ($arVariants["VALUE"] == $curVal || (!isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]))
			{
				$arVariants["CHECKED"]="Y";
				$arProperties["VALUE_FORMATED"] = $arVariants["NAME"];
			}

			$arProperties["VARIANTS"][] = $arVariants;
		}
	}
	elseif ($arProperties["TYPE"] == "FILE")
	{
		$arProperties["SIZE1"] = intval($arProperties["SIZE1"]);
		$arProperties["VALUE"] = isset($curVal) ? CSaleHelper::getFileInfo($curVal) : $arProperties["DEFAULT_VALUE"];
	}

	return $arProperties;
}