Exemplo n.º 1
0
 static function DoSaveUserProfile($userId, $profileId, $profileName, $personTypeId, $orderProps, &$arErrors)
 {
     $profileId = intval($profileId);
     $arIDs = array();
     if ($profileId > 0) {
         $dbProfile = CSaleOrderUserProps::GetList(array(), array("ID" => $profileId), false, false, array("ID", "NAME", "USER_ID", "PERSON_TYPE_ID"));
         $arProfile = $dbProfile->Fetch();
         if (!$arProfile) {
             $arErrors[] = array("CODE" => "PROFILE_NOT_FOUND", "TEXT" => GetMessage('SKGOUP_PROFILE_NOT_FOUND'));
             return false;
         }
         if ($arProfile["USER_ID"] != $userId || $arProfile["PERSON_TYPE_ID"] != $personTypeId) {
             $arErrors[] = array("CODE" => "PARAM", "TEXT" => GetMessage('SKGOUP_PARRAMS_ERROR'));
             return false;
         }
         //if (strlen($profileName) > 0 && $profileName != $arProfile["NAME"])
         if (strlen($profileName) > 0) {
             $arFields = array("NAME" => $profileName, "USER_ID" => $userId);
             CSaleOrderUserProps::Update($profileId, $arFields);
         }
         $dbUserPropsValues = CSaleOrderUserPropsValue::GetList(array(), array("USER_PROPS_ID" => $profileId), false, false, array("ID", "ORDER_PROPS_ID"));
         while ($arUserPropsValue = $dbUserPropsValues->Fetch()) {
             $arIDs[$arUserPropsValue["ORDER_PROPS_ID"]] = $arUserPropsValue["ID"];
         }
     }
     if (!is_array($orderProps)) {
         $dbOrderPropsValues = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => intval($orderProps)), false, false, array("ORDER_PROPS_ID", "VALUE"));
         $orderProps = array();
         while ($arOrderPropsValue = $dbOrderPropsValues->Fetch()) {
             $orderProps[$arOrderPropsValue["ORDER_PROPS_ID"]] = $arOrderPropsValue["VALUE"];
         }
     }
     $dbOrderProperties = CSaleOrderProps::GetList(array(), array("PERSON_TYPE_ID" => $personTypeId, "ACTIVE" => "Y", "UTIL" => "N", "USER_PROPS" => "Y"), false, false, array("ID", "TYPE", "NAME", "CODE"));
     while ($arOrderProperty = $dbOrderProperties->Fetch()) {
         $curVal = $orderProps[$arOrderProperty["ID"]];
         if ($arOrderProperty["TYPE"] == "MULTISELECT" && is_array($curVal)) {
             $curVal = implode(",", $curVal);
         }
         if (strlen($curVal) > 0) {
             if ($profileId <= 0) {
                 if (strlen($profileName) <= 0) {
                     $profileName = GetMessage("SOA_PROFILE") . " " . Date("Y-m-d");
                 }
                 $arFields = array("NAME" => $profileName, "USER_ID" => $userId, "PERSON_TYPE_ID" => $personTypeId);
                 $profileId = CSaleOrderUserProps::Add($arFields);
             }
             if (array_key_exists($arOrderProperty["ID"], $arIDs)) {
                 $arFields = array("NAME" => $arOrderProperty["NAME"], "VALUE" => $curVal);
                 CSaleOrderUserPropsValue::Update($arIDs[$arOrderProperty["ID"]], $arFields);
                 unset($arIDs[$arOrderProperty["ID"]]);
             } else {
                 $arFields = array("USER_PROPS_ID" => $profileId, "ORDER_PROPS_ID" => $arOrderProperty["ID"], "NAME" => $arOrderProperty["NAME"], "VALUE" => $curVal);
                 CSaleOrderUserPropsValue::Add($arFields);
             }
         }
     }
     foreach ($arIDs as $id) {
         CSaleOrderUserPropsValue::Delete($id);
     }
 }
Exemplo n.º 2
0
 public static function GetOrderPropId($code)
 {
     $id = 0;
     if (CModule::IncludeModule('sale')) {
         $db_props = CSaleOrderProps::GetList(array("SORT" => "ASC"), array("CODE" => $code), false, false, array("ID"));
         if ($props = $db_props->Fetch()) {
             $id = $props["ID"];
         }
     } else {
         Trace("Error: can't include module sale");
     }
     return $id;
 }
Exemplo n.º 3
0
 protected function getOrderProps()
 {
     if ($this->orderProps === null) {
         $this->orderProps = array();
         if (isset($this->formData["PERSON_TYPE"])) {
             $db_props = CSaleOrderProps::GetList(array(), array("PERSON_TYPE_ID" => $this->formData["PERSON_TYPE"]));
             while ($prop = $db_props->Fetch()) {
                 $this->orderProps[] = $prop;
             }
         }
     }
     return $this->orderProps;
 }
 function Delete($ID)
 {
     global $DB;
     $ID = IntVal($ID);
     $db_orderProps = CSaleOrderProps::GetList($by = "PROPS_GROUP_ID", $order = "ASC", array("PROPS_GROUP_ID" => $ID));
     while ($arOrderProps = $db_orderProps->Fetch()) {
         $DB->Query("DELETE FROM b_sale_order_props_variant WHERE ORDER_PROPS_ID = " . $arOrderProps["ID"] . "", true);
         $DB->Query("UPDATE b_sale_order_props_value SET ORDER_PROPS_ID = NULL WHERE ORDER_PROPS_ID = " . $arOrderProps["ID"] . "", true);
         $DB->Query("DELETE FROM b_sale_user_props_value WHERE ORDER_PROPS_ID = " . $arOrderProps["ID"] . "", true);
     }
     $DB->Query("DELETE FROM b_sale_order_props WHERE PROPS_GROUP_ID = " . $ID . "", true);
     CSaleOrderUserProps::ClearEmpty();
     return $DB->Query("DELETE FROM b_sale_order_props_group WHERE ID = " . $ID . "", true);
 }
Exemplo n.º 5
0
    public static function getOrderProps($id = false)
    {
        static $result = null;
        static $resultById = null;
        static $resultByCode = null;

        if($result === null)
        {
            $rs = \CSaleOrderProps::GetList(array(), array(), false, false, array('ID', 'NAME', 'CODE'));
            while($ar = $rs->GetNext(true, false))
            {
                $obj = new OrderProp($ar);
                $resultById[ $ar['ID'] ] = &$obj;
                $resultByCode[ $ar['CODE'] ] = &$obj;
                $result[] = &$obj;
                unset($obj);
            }
        }

        return $id ? (isset($resultById[$id]) ? $resultById[$id] : (isset($resultByCode[$id]) ? $resultByCode[$id] : false)) : $result;
    }
Exemplo n.º 6
0
    static function Update($profileID, $arFields) {
        global $DB;

        $result = new WS_SaleUserProfilesErrorsContainer();
        if (empty($profileID)) {
            return $result->addErrorString(GetMessage("ws.saleuserprofiles_save_error_required_id"));
        }
        $DB->StartTransaction();

        if (!empty($arFields["PROPS"])) {
            $props = $arFields["PROPS"];
            unset($arFields["PROPS"]);
        }

        // сохраняем поля
        if (!empty($arFields)) {
            if(!$profileID = CSaleOrderUserProps::Update($profileID, $arFields)){
                $result->addErrorString(GetMessage("ws.saleuserprofiles_save_error_save_fields"));
            } else {
                $arFields = CSaleOrderUserProps::GetByID($profileID);
            }
        }

        // сохраняем свойства
        if (!empty($props) && !$result->getErrorsAsString()) {
            // удаляем все свойства
            CSaleOrderUserPropsValue::DeleteAll($profileID);
            $res = CSaleOrderProps::GetList(array(), array("PERSON_TYPE_ID" => $arFields["PERSON_TYPE_ID"], "USER_PROPS" => "Y"), false, false, array());
            while ($arRes = $res->Fetch()) {
                if ($arRes['REQUIED'] === 'Y' && empty($props[$arRes['ID']])) {
                    $result->addErrorString(GetMessage("ws.saleuserprofiles_save_error_required_field") . "\"" . $arRes["NAME"] . "\"");
                    continue;
                }

                $arValueTemp = $props[$arRes['ID']];
                if (is_array($arValueTemp)) {
                    $arValueTemp = "";

                    for ($i = 0; $i < count($props[$arRes['ID']]); $i++) {
                        if ($i > 0) {
                            $arValueTemp .= ",";
                        }
                        $arValueTemp .= $props[$arRes['ID']][$i];
                    }

                }

                $arProp = array(
                    "VALUE" => $arValueTemp,
                    "NAME" => $arRes["NAME"],
                    "ORDER_PROPS_ID" => $arRes['ID'],
                    "USER_PROPS_ID" => $profileID
                );
                CSaleOrderUserPropsValue::Add($arProp);
            }
        }

        if ($result->getErrorsAsString()) {
            $DB->Rollback();
        } else {
            $DB->Commit();
        }
        return $result;
    }
Exemplo n.º 7
0
 public static function getLocationPropertyInfo()
 {
     static $info;
     if ($info === null) {
         $info = array();
         if (CSaleLocation::isLocationProMigrated()) {
             $res = CSaleOrderProps::GetList(array(), array('TYPE' => 'LOCATION'), false, false, array('ID', 'CODE'));
             while ($item = $res->fetch()) {
                 $info['ID'][$item['ID']] = $item['CODE'];
                 $info['CODE'][$item['CODE']] = $item['ID'];
             }
         }
     }
     return $info;
 }
Exemplo n.º 8
0
			<?php 
        $arPropValues = array();
        if (!$bVarsFromForm || $PARTIAL_SUBMIT == "Y") {
            $dbPropValuesList = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $ID), false, false, array("ID", "ORDER_PROPS_ID", "NAME", "VALUE", "CODE"));
            while ($arPropValuesList = $dbPropValuesList->Fetch()) {
                $arPropValues[IntVal($arPropValuesList["ORDER_PROPS_ID"])] = $arPropValuesList["VALUE"];
            }
        } else {
            foreach ($_REQUEST as $key => $value) {
                if (substr($key, 0, strlen("ORDER_PROP_")) == "ORDER_PROP_") {
                    $arPropValues[IntVal(substr($key, strlen("ORDER_PROP_")))] = htmlspecialcharsEx($value);
                }
            }
        }
        $propertyGroupID = -1;
        $dbProperties = CSaleOrderProps::GetList(array("GROUP_SORT" => "ASC", "PROPS_GROUP_ID" => "ASC", "SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $str_PERSON_TYPE_ID), false, false, array("*"));
        while ($arProperties = $dbProperties->Fetch()) {
            if (IntVal($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) {
                ?>
					<tr class="heading">
						<td colspan="2">
							<?php 
                echo htmlspecialcharsEx($arProperties["GROUP_NAME"]);
                ?>
						</td>
					</tr>
					<?php 
                $propertyGroupID = IntVal($arProperties["PROPS_GROUP_ID"]);
            }
            ?>
				<tr>
Exemplo n.º 9
0
    function ShowStep()
    {
        $wizard =& $this->GetWizard();
        $paySystem = $wizard->GetVar("paySystem");
        $siteID = $wizard->GetVar("siteID");
        $personType = $wizard->GetVar("personType");
        CModule::IncludeModule("sale");
        function LocalGetPSActionParams($fileName)
        {
            $arPSCorrespondence = array();
            if (file_exists($fileName) && is_file($fileName)) {
                include $fileName;
            }
            return $arPSCorrespondence;
        }
        $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC"), array("ACTIVE" => "Y", "LID" => $siteID));
        while ($arPaySystem = $dbPaySystem->GetNext()) {
            $arPaySystems[$arPaySystem["ID"]] = $arPaySystem["NAME"];
        }
        $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC"), array("ACTIVE" => "Y", "LID" => $siteID));
        while ($arPersonType = $dbPersonType->GetNext()) {
            $arPersons[$arPersonType["ID"]] = $arPersonType["NAME"];
        }
        $arFieldsList["USER"] = array("ID" => GetMessage("SPS_USER_ID"), "LOGIN" => GetMessage("SPS_USER_LOGIN"), "NAME" => GetMessage("SPS_USER_NAME"), "LAST_NAME" => GetMessage("SPS_USER_LAST_NAME"), "EMAIL" => "EMail", "LID" => GetMessage("SPS_USER_SITE"), "PERSONAL_PROFESSION" => GetMessage("SPS_USER_PROF"), "PERSONAL_WWW" => GetMessage("SPS_USER_WEB"), "PERSONAL_ICQ" => GetMessage("SPS_USER_ICQ"), "PERSONAL_GENDER" => GetMessage("SPS_USER_SEX"), "PERSONAL_FAX" => GetMessage("SPS_USER_FAX"), "PERSONAL_MOBILE" => GetMessage("SPS_USER_PHONE"), "PERSONAL_STREET" => GetMessage("SPS_USER_ADDRESS"), "PERSONAL_MAILBOX" => GetMessage("SPS_USER_POST"), "PERSONAL_CITY" => GetMessage("SPS_USER_CITY"), "PERSONAL_STATE" => GetMessage("SPS_USER_STATE"), "PERSONAL_ZIP" => GetMessage("SPS_USER_ZIP"), "PERSONAL_COUNTRY" => GetMessage("SPS_USER_COUNTRY"), "WORK_COMPANY" => GetMessage("SPS_USER_COMPANY"), "WORK_DEPARTMENT" => GetMessage("SPS_USER_DEPT"), "WORK_POSITION" => GetMessage("SPS_USER_DOL"), "WORK_WWW" => GetMessage("SPS_USER_COM_WEB"), "WORK_PHONE" => GetMessage("SPS_USER_COM_PHONE"), "WORK_FAX" => GetMessage("SPS_USER_COM_FAX"), "WORK_STREET" => GetMessage("SPS_USER_COM_ADDRESS"), "WORK_MAILBOX" => GetMessage("SPS_USER_COM_POST"), "WORK_CITY" => GetMessage("SPS_USER_COM_CITY"), "WORK_STATE" => GetMessage("SPS_USER_COM_STATE"), "WORK_ZIP" => GetMessage("SPS_USER_COM_ZIP"), "WORK_COUNTRY" => GetMessage("SPS_USER_COM_COUNTRY"));
        $arFieldsList["ORDER"] = array("ID" => GetMessage("SPS_ORDER_ID"), "DATE_INSERT" => GetMessage("SPS_ORDER_DATETIME"), "DATE_INSERT_DATE" => GetMessage("SPS_ORDER_DATE"), "SHOULD_PAY" => GetMessage("SPS_ORDER_PRICE"), "CURRENCY" => GetMessage("SPS_ORDER_CURRENCY"), "PRICE" => GetMessage("SPS_ORDER_SUM"), "LID" => GetMessage("SPS_ORDER_SITE"), "PRICE_DELIVERY" => GetMessage("SPS_ORDER_PRICE_DELIV"), "DISCOUNT_VALUE" => GetMessage("SPS_ORDER_DESCOUNT"), "USER_ID" => GetMessage("SPS_ORDER_USER_ID"), "PAY_SYSTEM_ID" => GetMessage("SPS_ORDER_PS"), "DELIVERY_ID" => GetMessage("SPS_ORDER_DELIV"), "TAX_VALUE" => GetMessage("SPS_ORDER_TAX"));
        foreach ($personType as $personID) {
            $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $personID), false, false, array("ID", "CODE", "NAME", "TYPE", "SORT", "PERSON_TYPE_ID"));
            while ($arOrderProps = $dbOrderProps->GetNext()) {
                $arFieldsList["PROPERTY"][$arOrderProps["PERSON_TYPE_ID"]][strlen($arOrderProps["CODE"]) > 0 ? $arOrderProps["CODE"] : $arOrderProps["ID"]] = $arOrderProps["NAME"];
                if ($arOrderProps["TYPE"] == "LOCATION") {
                    $arFieldsList["PROPERTY"][$arOrderProps["PERSON_TYPE_ID"]][(strlen($arOrderProps["CODE"]) > 0 ? $arOrderProps["CODE"] : $arOrderProps["ID"]) . "_COUNTRY"] = $arOrderProps["NAME"] . " (" . GetMessage("SPS_JCOUNTRY") . ")";
                    $arFieldsList["PROPERTY"][$arOrderProps["PERSON_TYPE_ID"]][(strlen($arOrderProps["CODE"]) > 0 ? $arOrderProps["CODE"] : $arOrderProps["ID"]) . "_CITY"] = $arOrderProps["NAME"] . " (" . GetMessage("SPS_JCITY") . ")";
                }
            }
        }
        ?>
		<script type="text/javascript">
		var arUserFieldsList = new Array();
		var arUserFieldsNameList = new Array();
		var arOrderFieldsList = new Array();
		var arOrderFieldsNameList = new Array();
		var arPropFieldsList = new Array();
		var arPropFieldsNameList = new Array();

		<?php 
        $i = -1;
        foreach ($arFieldsList["USER"] as $k => $v) {
            $i++;
            ?>
			arUserFieldsList[<?php 
            echo $i;
            ?>
] = "<?php 
            echo $k;
            ?>
";
			arUserFieldsNameList[<?php 
            echo $i;
            ?>
] = "<?php 
            echo $v;
            ?>
";
			<?php 
        }
        $i = -1;
        foreach ($arFieldsList["ORDER"] as $k => $v) {
            $i++;
            ?>
			arOrderFieldsList[<?php 
            echo $i;
            ?>
] = "<?php 
            echo $k;
            ?>
";
			arOrderFieldsNameList[<?php 
            echo $i;
            ?>
] = "<?php 
            echo $v;
            ?>
";
			<?php 
        }
        $i = -1;
        foreach ($arFieldsList["PROPERTY"] as $k => $v) {
            ?>
			arPropFieldsList[<?php 
            echo $k;
            ?>
] = new Array();
			arPropFieldsNameList[<?php 
            echo $k;
            ?>
] = new Array();
			<?php 
            foreach ($v as $k1 => $v1) {
                $i++;
                ?>
				arPropFieldsList[<?php 
                echo $k;
                ?>
][<?php 
                echo $i;
                ?>
] = "<?php 
                echo $k1;
                ?>
";
				arPropFieldsNameList[<?php 
                echo $k;
                ?>
][<?php 
                echo $i;
                ?>
] = "<?php 
                echo $v1;
                ?>
";
				<?php 
            }
        }
        ?>
		function changeVariantList(id, value, ind)
		{
			var oValue1 = document.getElementById("VALUE1_" + id);
			var oValue2 = document.getElementById("VALUE2_" + id);

			var value1_length = oValue1.length;
			while (value1_length > 0)
			{
				value1_length--;
				oValue1.options[value1_length] = null;
			}
			value1_length = 0;

			if (value == "USER")
			{
				oValue2.style["display"] = "none";
				oValue1.style["display"] = "block";

				for (i = 0; i < arUserFieldsList.length; i++)
				{
					var newoption = new Option(arUserFieldsNameList[i], arUserFieldsList[i], false, false);
					oValue1.options[value1_length] = newoption;
					value1_length++;
				}
			}
			else
			{
				if (value == "ORDER")
				{
					oValue2.style["display"] = "none";
					oValue1.style["display"] = "block";

					for (i = 0; i < arOrderFieldsList.length; i++)
					{
						var newoption = new Option(arOrderFieldsNameList[i], arOrderFieldsList[i], false, false);
						oValue1.options[value1_length] = newoption;
						value1_length++;
					}
				}
				else
				{
					if (value == "PROPERTY")
					{
						oValue2.style["display"] = "none";
						oValue1.style["display"] = "block";
						for (i = 0; i < arPropFieldsList[ind].length; i++)
						{
							var newoption = new Option(arPropFieldsNameList[ind][i], arPropFieldsList[ind][i], false, false);
							oValue1.options[value1_length] = newoption;
							value1_length++;
						}
					}
					else
					{
						oValue1.style["display"] = "none";
						oValue2.style["display"] = "block";
						oValue2.value = "";
					}
				}
			}
		}

		function ShowSet(id, action)
		{
			if(action == "show")
			{
				document.getElementById(id).style['display'] = "block";
				document.getElementById(id+"-set").style['display'] = "none";
				document.getElementById(id+"-unset").style['display'] = "block";
			}
			else if(action == "hide")
			{
				document.getElementById(id).style['display'] = "none";
				document.getElementById(id+"-set").style['display'] = "block";
				document.getElementById(id+"-unset").style['display'] = "none";
			}
		}
		</script>
		<?php 
        $this->content .= GetMessage("WW_STEP4_1") . "<br /><br />";
        $wizard =& $this->GetWizard();
        foreach ($paySystem as $k => $v) {
            if (in_array($k, $personType)) {
                foreach ($v as $v1) {
                    $dbPaySystemAction = CSalePaySystemAction::GetList(array("NAME" => "ASC"), array("PAY_SYSTEM_ID" => $v1));
                    if ($arPaySystemAction = $dbPaySystemAction->Fetch()) {
                        $adit = array();
                        $this->content .= "<b>" . $arPaySystems[$v1] . "</b> - " . $arPersons[$k] . "<br />";
                        $arPSCorrespondence = LocalGetPSActionParams($_SERVER["DOCUMENT_ROOT"] . $arPaySystemAction["ACTION_FILE"] . "/.description.php");
                        $this->content .= "<div id=\"" . $v1 . "-" . $k . "-set\"><a href=\"javascript:ShowSet('" . $v1 . "-" . $k . "', 'show')\">" . GetMessage("WW_STEP4_2") . "</a></div>";
                        $this->content .= "<div id=\"" . $v1 . "-" . $k . "-unset\" style=\"display:none;\"><a href=\"javascript:ShowSet('" . $v1 . "-" . $k . "', 'hide')\">" . GetMessage("WW_STEP4_3") . "</a></div>";
                        $this->content .= "<div id=\"" . $v1 . "-" . $k . "\" style=\"display: none;\">";
                        $this->content .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"/bitrix/wizards/bitrix/sale.install/styles.css\">";
                        $this->content .= "<table class=\"data-table\">";
                        $this->content .= "<tr><th>" . GetMessage("WW_STEP4_4") . "</th><td>" . $this->ShowCheckboxField("paySystemPopup[" . $v1 . "][" . $k . "]", "Y") . "</td></tr>";
                        foreach ($arPSCorrespondence as $k2 => $v2) {
                            $arFList = array();
                            $this->content .= "<tr><th>";
                            $this->content .= $v2["NAME"] . "<br /><small>" . $v2["DESCR"] . "</small>";
                            $this->content .= "</th><td>";
                            $arTypes = array("PROPERTY" => GetMessage("WW_STEP4_5"), "ORDER" => GetMessage("WW_STEP4_6"), "USER" => GetMessage("WW_STEP4_7"), "" => GetMessage("WW_STEP4_8"));
                            $this->content .= $this->ShowSelectField($v1 . "_" . $k2 . "_" . $k, $arTypes, array("onChange" => "changeVariantList('" . $v1 . "_" . $k2 . "_" . $k . "', this.value, '" . $k . "')", "id" => $v1 . "_" . $k2 . "_" . $k));
                            ${$v1 . "_" . $k2 . "_" . $k} = $wizard->GetVar($v1 . "_" . $k2 . "_" . $k, true);
                            $this->content .= "<br />";
                            if (strlen(${$v1 . "_" . $k2 . "_" . $k}) > 0) {
                                if (${$v1 . "_" . $k2 . "_" . $k} == "PROPERTY") {
                                    $arFList = $arFieldsList["PROPERTY"][$k];
                                } else {
                                    $arFList = $arFieldsList[${$v1 . "_" . $k2 . "_" . $k}];
                                }
                                $this->content .= $this->ShowSelectField("VALUE1_" . $v1 . "_" . $k2 . "_" . $k, $arFList, array("id" => "VALUE1_" . $v1 . "_" . $k2 . "_" . $k));
                                $this->content .= $this->ShowInputField("text", "VALUE2_" . $v1 . "_" . $k2 . "_" . $k, array("id" => "VALUE2_" . $v1 . "_" . $k2 . "_" . $k, "style" => "display:none;", "size" => "20"));
                            } else {
                                $this->content .= $this->ShowSelectField("VALUE1_" . $v1 . "_" . $k2 . "_" . $k, array(), array("id" => "VALUE1_" . $v1 . "_" . $k2 . "_" . $k, "style" => "display:none;"));
                                if ($k2 == "PATH_TO_STAMP") {
                                    $this->content .= $this->ShowHiddenField("stamp_img[]", "VALUE2_" . $v1 . "_" . $k2 . "_" . $k);
                                    $this->content .= $this->ShowFileField("VALUE2_" . $v1 . "_" . $k2 . "_" . $k . "_img", array("id" => "VALUE2_" . $v1 . "_" . $k2 . "_" . $k, "size" => "20"));
                                    $img = $wizard->GetVar("VALUE2_" . $v1 . "_" . $k2 . "_" . $k, true);
                                    if (strlen($img) > 0) {
                                        $this->content .= "<br />" . CFile::ShowImage($img, 50, 50, "border=\"0\"", "", true) . "<br />";
                                    }
                                } else {
                                    $this->content .= $this->ShowInputField("text", "VALUE2_" . $v1 . "_" . $k2 . "_" . $k, array("id" => "VALUE2_" . $v1 . "_" . $k2 . "_" . $k, "size" => "20"));
                                }
                            }
                            $this->content .= "</td></tr>";
                        }
                        $this->content .= "</table></div><br />";
                    }
                }
            }
        }
    }
Exemplo n.º 10
0
  */
 $userProfile = $arResultProps["USER_PROFILES"];
 $arPropValues = array();
 $arPropValues = $userProfile[$PROFILE_ID]["VALUES"];
 $arFilter = array("PERSON_TYPE_ID" => $PERSON_TYPE, "ACTIVE" => "Y", "UTIL" => "N");
 $dbProperties = CSaleOrderProps::GetList(array("SORT" => "ASC"), $arFilter, false, false, array("ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "CODE", "GROUP_NAME", "GROUP_SORT", "SORT", "USER_PROPS", "IS_ZIP", "INPUT_FIELD_LOCATION", "SUBSCRIBE"));
 $locationZipID = "";
 $locationID = "";
 $profileName = "";
 $payerName = "";
 $payerEMail = "";
 //load location for the index if isset index
 $locationForZip = "";
 if (isset($_REQUEST["CHANGE_ZIP"]) && $_REQUEST["CHANGE_ZIP"] == "Y") {
     $arFilterZip = array("PERSON_TYPE_ID" => $PERSON_TYPE, "IS_ZIP" => "Y", "ACTIVE" => "Y", "UTIL" => "N");
     $dbPropertiesZip = CSaleOrderProps::GetList(array("SORT" => "ASC"), $arFilterZip, false, false, array("ID"));
     $arPropZip = $dbPropertiesZip->GetNext();
     $zipCode = htmlspecialcharsEx($_POST["ORDER_PROP_" . $arPropZip["ID"]]);
     $arZip = CSaleLocation::GetByZIP($zipCode);
     if (is_array($arZip) && count($arZip) > 1) {
         $locationForZip = intval($arZip["ID"]);
     }
 }
 while ($arProperties = $dbProperties->GetNext()) {
     if ((isset($_POST["BasketOrder"]) || $requestAjax || $_REQUEST["form"] == "Y") && $PROFILE_ID_OLD == $PROFILE_ID) {
         $curVal = htmlspecialcharsEx($_REQUEST["ORDER_PROP_" . $arProperties["ID"]]);
         if (intval($_REQUEST["NEW_LOCATION_" . $arProperties["ID"]]) > 0) {
             $curVal = intval($_POST["NEW_LOCATION_" . $arProperties["ID"]]);
         }
     } else {
         $curVal = $arPropValues[intval($arProperties["ID"])];
Exemplo n.º 11
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
$arYesNo = array("Y" => GetMessage("SOF_DESC_YES"), "N" => GetMessage("SOF_DESC_NO"));
$arComponentParameters = array("PARAMETERS" => array("PATH_TO_BASKET" => array("NAME" => GetMessage("SOF_PATH_TO_BASKET"), "TYPE" => "STRING", "MULTIPLE" => "N", "DEFAULT" => "basket.php", "COLS" => 25, "PARENT" => "ADDITIONAL_SETTINGS"), "PATH_TO_PERSONAL" => array("NAME" => GetMessage("SOF_PATH_TO_PERSONAL"), "TYPE" => "STRING", "MULTIPLE" => "N", "DEFAULT" => "index.php", "COLS" => 25, "PARENT" => "ADDITIONAL_SETTINGS"), "PATH_TO_AUTH" => array("NAME" => GetMessage("SOF_PATH_TO_AUTH"), "TYPE" => "STRING", "MULTIPLE" => "N", "DEFAULT" => "/auth.php", "COLS" => 25, "PARENT" => "ADDITIONAL_SETTINGS"), "PATH_TO_PAYMENT" => array("NAME" => GetMessage("SOF_PATH_TO_PAYMENT"), "TYPE" => "STRING", "MULTIPLE" => "N", "DEFAULT" => "payment.php", "COLS" => 25, "PARENT" => "ADDITIONAL_SETTINGS"), "ALLOW_PAY_FROM_ACCOUNT" => array("NAME" => GetMessage("SOF_ALLOW_PAY_FROM_ACCOUNT"), "TYPE" => "LIST", "MULTIPLE" => "N", "VALUES" => array("N" => GetMessage("SOF_DESC_NO"), "Y" => GetMessage("SOF_DESC_YES")), "DEFAULT" => "Y", "ADDITIONAL_VALUES" => "N", "PARENT" => "BASE"), "SHOW_MENU" => array("NAME" => GetMessage("SOF_SHOW_MENU"), "TYPE" => "LIST", "MULTIPLE" => "N", "VALUES" => array("N" => GetMessage("SOF_DESC_NO"), "Y" => GetMessage("SOF_DESC_YES")), "DEFAULT" => "Y", "ADDITIONAL_VALUES" => "N", "PARENT" => "BASE"), "USE_AJAX_LOCATIONS" => array("NAME" => GetMessage("SOF_USE_AJAX_LOCATIONS"), "TYPE" => "CHECKBOX", "MULTIPLE" => "N", "DEFAULT" => "Y", "PARENT" => "ADDITIONAL_SETTINGS"), "SHOW_AJAX_DELIVERY_LINK" => array("NAME" => GetMessage('SOF_SHOW_AJAX_DELIVERY_LINK'), "TYPE" => "LIST", "MULTIPLE" => "N", "VALUES" => array("Y" => GetMessage('SOF_SHOW_AJAX_DELIVERY_LINK_Y'), "N" => GetMessage('SOF_SHOW_AJAX_DELIVERY_LINK_N'), "S" => GetMessage('SOF_SHOW_AJAX_DELIVERY_LINK_S')), "DEFAULT" => "Y", "PARENT" => "ADDITIONAL_SETTINGS"), "CITY_OUT_LOCATION" => array("NAME" => GetMessage("SALE_SOF_PARAM_CITY_OUT_LOCATION"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y", "ADDITIONAL_VALUES" => "N", "MULTIPLE" => "N", "PARENT" => "BASE"), "COUNT_DELIVERY_TAX" => array("NAME" => GetMessage("SOF_COUNT_DELIVERY_TAX"), "TYPE" => "LIST", "MULTIPLE" => "N", "VALUES" => array("N" => GetMessage("SOF_DESC_NO"), "Y" => GetMessage("SOF_DESC_YES")), "DEFAULT" => "N", "ADDITIONAL_VALUES" => "N", "PARENT" => "BASE"), "COUNT_DISCOUNT_4_ALL_QUANTITY" => array("NAME" => GetMessage("SOF_COUNT_DISCOUNT_4_ALL_QUANTITY"), "TYPE" => "LIST", "MULTIPLE" => "N", "VALUES" => array("N" => GetMessage("SOF_DESC_NO"), "Y" => GetMessage("SOF_DESC_YES")), "DEFAULT" => "N", "ADDITIONAL_VALUES" => "N", "PARENT" => "BASE"), "SET_TITLE" => array(), "PRICE_VAT_INCLUDE" => array("NAME" => GetMessage('SOF_VAT_INCLUDE'), "TYPE" => "CHECKBOX", "MULTIPLE" => "N", "DEFAULT" => "Y", "ADDITIONAL_VALUES" => "N", "PARENT" => "ADDITIONAL_SETTINGS"), "PRICE_VAT_SHOW_VALUE" => array("NAME" => GetMessage('SOF_VAT_SHOW_VALUE'), "TYPE" => "CHECKBOX", "MULTIPLE" => "N", "DEFAULT" => "Y", "ADDITIONAL_VALUES" => "N", "PARENT" => "ADDITIONAL_SETTINGS"), "ONLY_FULL_PAY_FROM_ACCOUNT" => array("NAME" => GetMessage("SOF_ONLY_FULL_PAY_FROM_ACCOUNT"), "TYPE" => "LIST", "MULTIPLE" => "N", "VALUES" => array("N" => GetMessage("SOF_DESC_NO"), "Y" => GetMessage("SOF_DESC_YES")), "DEFAULT" => "N", "ADDITIONAL_VALUES" => "N", "PARENT" => "BASE"), "SEND_NEW_USER_NOTIFY" => array("NAME" => GetMessage("SOA_SEND_NEW_USER_NOTIFY"), "TYPE" => "CHECKBOX", "DEFAULT" => "Y", "PARENT" => "BASE"), "DELIVERY_NO_SESSION" => array("NAME" => GetMessage("SOA_DELIVERY_NO_SESSION"), "TYPE" => "CHECKBOX", "MULTIPLE" => "N", "DEFAULT" => "N", "PARENT" => "BASE")));
if (CModule::IncludeModule("sale")) {
    $dbPerson = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"));
    while ($arPerson = $dbPerson->GetNext()) {
        $arPers2Prop = array("" => GetMessage("SOF_SHOW_ALL"));
        $bProp = false;
        $dbProp = CSaleOrderProps::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $arPerson["ID"]));
        while ($arProp = $dbProp->GetNext()) {
            $arPers2Prop[$arProp["ID"]] = $arProp["NAME"];
            $bProp = true;
        }
        if ($bProp) {
            $arComponentParameters["PARAMETERS"]["PROP_" . $arPerson["ID"]] = array("NAME" => GetMessage("SOF_PROPS_NOT_SHOW") . " \"" . $arPerson["NAME"] . "\" (" . $arPerson["LID"] . ")", "TYPE" => "LIST", "MULTIPLE" => "Y", "VALUES" => $arPers2Prop, "DEFAULT" => "", "COLS" => 25, "ADDITIONAL_VALUES" => "N", "PARENT" => "BASE");
        }
    }
}
Exemplo n.º 12
0
 static function DoSaveOrderProps($orderId, $personTypeId, $arOrderProps, &$arErrors)
 {
     $arIDs = array();
     $dbResult = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $orderId), false, false, array("ID", "ORDER_PROPS_ID"));
     while ($arResult = $dbResult->Fetch()) {
         $arIDs[$arResult["ORDER_PROPS_ID"]] = $arResult["ID"];
     }
     $dbOrderProperties = CSaleOrderProps::GetList(array("SORT" => "ASC"), array("PERSON_TYPE_ID" => $personTypeId, "ACTIVE" => "Y"), false, false, array("ID", "TYPE", "NAME", "CODE", "USER_PROPS", "SORT"));
     while ($arOrderProperty = $dbOrderProperties->Fetch()) {
         $curVal = $arOrderProps[$arOrderProperty["ID"]];
         if ($arOrderProperty["TYPE"] == "MULTISELECT" && is_array($curVal)) {
             $curVal = implode(",", $curVal);
         }
         if (strlen($curVal) > 0) {
             $arFields = array("ORDER_ID" => $orderId, "ORDER_PROPS_ID" => $arOrderProperty["ID"], "NAME" => $arOrderProperty["NAME"], "CODE" => $arOrderProperty["CODE"], "VALUE" => $curVal);
             if (array_key_exists($arOrderProperty["ID"], $arIDs)) {
                 CSaleOrderPropsValue::Update($arIDs[$arOrderProperty["ID"]], $arFields);
                 unset($arIDs[$arOrderProperty["ID"]]);
             } else {
                 CSaleOrderPropsValue::Add($arFields);
             }
         }
     }
     foreach ($arIDs as $id) {
         CSaleOrderPropsValue::Delete($id);
     }
 }
$tabControl->Begin(array("FORM_ACTION" => $APPLICATION->GetCurPage() . "?lang=" . LANG . $urlForm));
//TAB EDIT PROFILE
$tabControl->BeginNextFormTab();
if (!empty($arProfile) && !empty($arUser)) {
    $dbPersonType = CSalePersonType::GetList(array(), array("ACTIVE" => "Y", "ID" => $PERSON_TYPE));
    $arPersonType = $dbPersonType->GetNext();
    $LID = $arPersonType["LID"];
    $arFilterProps = array("PERSON_TYPE_ID" => $PERSON_TYPE, "ACTIVE" => "Y");
    if ($saleModulePermissions >= "U" && $saleModulePermissions < "W") {
        $arFilterProps["USER_PROPS"] = "Y";
        $arFilterProps["UTIL"] = "N";
    }
    $tabControl->AddViewField("CODE_USER", GetMessage("BUYER_PE_USER") . ":", "[<a href=\"/bitrix/admin/user_edit.php?ID=" . $arUser["ID"] . "&lang=" . LANGUAGE_ID . "\">" . $arUser["ID"] . "</a>] (" . $arUser["LOGIN"] . ") " . $userFIO);
    $tabControl->AddEditField("CODE_PROFILE_NAME", GetMessage("BUYER_PE_PROFILE_NAME") . ":", false, array("size" => 30, "maxlength" => 255), htmlspecialcharsEx($profileName));
    $propertyGroupID = "";
    $dbProperties = CSaleOrderProps::GetList(array("GROUP_SORT" => "ASC", "PROPS_GROUP_ID" => "ASC", "SORT" => "ASC", "NAME" => "ASC"), $arFilterProps, false, false, array("*"));
    $userProfile = CSaleOrderUserProps::DoLoadProfiles($USER_ID, $PERSON_TYPE);
    $curVal = "";
    while ($arProperties = $dbProperties->Fetch()) {
        $curVal = $userProfile[$ID]["VALUES"][IntVal($arProperties["ID"])];
        $fieldValue = $curVal != "" ? $curVal : $arProperties["DEFAULT_VALUE"];
        if (IntVal($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) {
            $tabControl->AddSection("SECTION_" . $arProperties["PROPS_GROUP_ID"], $arProperties["GROUP_NAME"]);
        }
        $shure = false;
        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") {
            $shure = true;
        }
        /*fields*/
        if ($arProperties["TYPE"] == "TEXT") {
            $tabControl->AddEditField("CODE_" . IntVal($arProperties["ID"]), $arProperties["NAME"] . ":", $shure, array("size" => 30, "maxlength" => 255), $fieldValue);
Exemplo n.º 14
0
 static function DoSaveOrderProps($orderId, $personTypeId, $arOrderProps, &$arErrors, $paysystemId = 0, $deliveryId = "")
 {
     $arIDs = array();
     $dbResult = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $orderId), false, false, array("ID", "ORDER_PROPS_ID"));
     while ($arResult = $dbResult->Fetch()) {
         $arIDs[$arResult["ORDER_PROPS_ID"]] = $arResult["ID"];
     }
     $arFilter = array("PERSON_TYPE_ID" => $personTypeId, "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";
     }
     $dbOrderProperties = CSaleOrderProps::GetList(array("SORT" => "ASC"), $arFilter, false, false, array("ID", "TYPE", "NAME", "CODE", "USER_PROPS", "SORT"));
     while ($arOrderProperty = $dbOrderProperties->Fetch()) {
         $curVal = $arOrderProps[$arOrderProperty["ID"]];
         if ($arOrderProperty["TYPE"] == "MULTISELECT" && is_array($curVal)) {
             $curVal = implode(",", $curVal);
         }
         if ($arOrderProperty["TYPE"] == "FILE" && is_array($curVal)) {
             $tmpVal = "";
             foreach ($curVal as $index => $fileData) {
                 $bModify = true;
                 if (isset($fileData["file_id"])) {
                     if (isset($fileData["del"])) {
                         $arFile = CFile::MakeFileArray($fileData["file_id"]);
                         $arFile["del"] = $fileData["del"];
                         $arFile["old_file"] = $fileData["file_id"];
                     } else {
                         $bModify = false;
                         if (strlen($tmpVal) > 0) {
                             $tmpVal .= ", " . $fileData["file_id"];
                         } else {
                             $tmpVal = $fileData["file_id"];
                         }
                     }
                 } else {
                     // new file array
                     $arFile = $fileData;
                 }
                 if (isset($arFile["name"]) && strlen($arFile["name"]) > 0 && $bModify) {
                     $arFile["MODULE_ID"] = "sale";
                     $fid = CFile::SaveFile($arFile, "sale");
                     if (intval($fid) > 0) {
                         if (strlen($tmpVal) > 0) {
                             $tmpVal .= ", " . $fid;
                         } else {
                             $tmpVal = $fid;
                         }
                     }
                 }
             }
             $curVal = $tmpVal;
         }
         if (strlen($curVal) > 0) {
             $arFields = array("ORDER_ID" => $orderId, "ORDER_PROPS_ID" => $arOrderProperty["ID"], "NAME" => $arOrderProperty["NAME"], "CODE" => $arOrderProperty["CODE"], "VALUE" => $curVal);
             if (array_key_exists($arOrderProperty["ID"], $arIDs)) {
                 CSaleOrderPropsValue::Update($arIDs[$arOrderProperty["ID"]], $arFields);
                 unset($arIDs[$arOrderProperty["ID"]]);
             } else {
                 CSaleOrderPropsValue::Add($arFields);
             }
         }
     }
     foreach ($arIDs as $id) {
         CSaleOrderPropsValue::Delete($id);
     }
 }
Exemplo n.º 15
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;
}
Exemplo n.º 16
0
	function nodeHandler(CDataXML $value)
	{
		$value = $value->GetArray();

		if(!empty($value[GetMessage("CC_BSC1_DOCUMENT")]))
		{
			$value = $value[GetMessage("CC_BSC1_DOCUMENT")];

			$arOrder = $this->collectOrderInfo($value);

			if(!empty($arOrder))
			{
				if(strlen($arOrder["ID"]) <= 0 && strlen($arOrder["ID_1C"]) > 0)//try to search order from 1C
				{
					$dbOrder = CSaleOrder::GetList(array("ID" => "DESC"), array("ID_1C" => $arOrder["ID_1C"]), false, false, array("ID", "ID_1C"));
					if($orderInfo = $dbOrder->Fetch())
					{
						$arOrder["ID"] = $orderInfo["ID"];
					}
				}
				if(strlen($arOrder["ID"]) > 0) // exists site order
				{
					$dbOrder = CSaleOrder::GetList(array(), array("ACCOUNT_NUMBER" => $arOrder["ID"]), false, false, array("ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "CANCELED", "DATE_CANCELED", "REASON_CANCELED", "STATUS_ID", "DATE_STATUS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "COMMENTS", "TAX_VALUE", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "STORE_ID", "ACCOUNT_NUMBER", "VERSION", "VERSION_1C", "ID_1C"));
					if($orderInfo = $dbOrder->Fetch())
					{
						if($arOrder["VERSION_1C"] != $orderInfo["VERSION_1C"] || (strlen($orderInfo["VERSION_1C"]) <= 0 || strlen($arOrder["VERSION_1C"]) <= 0)) // skip update if the same version
						{
							$arOrderFields = array();
							$orderId = $orderInfo["ID"];
							CSaleOrderChange::AddRecord($orderId, "ORDER_1C_IMPORT");
							if($arOrder["ID_1C"] != $orderInfo["ID_1C"])
								$arOrderFields["ID_1C"] = $arOrder["ID_1C"];
							$arOrderFields["VERSION_1C"] = $arOrder["VERSION_1C"];

							if($orderInfo["PAYED"] != "Y" && $orderInfo["ALLOW_DELIVERY"] != "Y" && $orderInfo["STATUS_ID"] != "F")
							{
								$dbOrderTax = CSaleOrderTax::GetList(
									array(),
									array("ORDER_ID" => $orderId),
									false,
									false,
									array("ID", "TAX_NAME", "VALUE", "VALUE_MONEY", "CODE", "IS_IN_PRICE")
								);
								$bTaxFound = false;
								if($arOrderTax = $dbOrderTax->Fetch())
								{
									$bTaxFound = true;
									if(IntVal($arOrderTax["VALUE_MONEY"]) != IntVal($arOrder["TAX"]["VALUE_MONEY"]) || IntVal($arOrderTax["VALUE"]) != IntVal($arOrder["TAX"]["VALUE"]) || ($arOrderTax["IS_IN_PRICE"] != $arOrder["TAX"]["IS_IN_PRICE"]))
									{
										if(IntVal($arOrder["TAX"]["VALUE"])>0)
										{
											$arFields = Array(
												"TAX_NAME" => $arOrder["TAX"]["NAME"],
												"ORDER_ID" => $orderId,
												"VALUE" => $arOrder["TAX"]["VALUE"],
												"IS_PERCENT" => "Y",
												"IS_IN_PRICE" => $arOrder["TAX"]["IS_IN_PRICE"],
												"VALUE_MONEY" => $arOrder["TAX"]["VALUE_MONEY"],
												"CODE" => "VAT1C",
												"APPLY_ORDER" => "100"
											);
											CSaleOrderTax::Update($arOrderTax["ID"], $arFields);
											$arOrderFields["TAX_VALUE"] = $arOrder["TAX"]["VALUE_MONEY"];
										}
										else
										{
											CSaleOrderTax::Delete($arOrderTax["ID"]);
											$arOrderFields["TAX_VALUE"] = 0;
										}
									}
								}

								if(!$bTaxFound)
								{
									if(IntVal($arOrder["TAX"]["VALUE"])>0)
									{
										$arFields = Array(
											"TAX_NAME" => $arOrder["TAX"]["NAME"],
											"ORDER_ID" => $orderId,
											"VALUE" => $arOrder["TAX"]["VALUE"],
											"IS_PERCENT" => "Y",
											"IS_IN_PRICE" => $arOrder["TAX"]["IS_IN_PRICE"],
											"VALUE_MONEY" => $arOrder["TAX"]["VALUE_MONEY"]
										);
										CSaleOrderTax::Add($arFields);
										$arOrderFields["TAX_VALUE"] = $arOrder["TAX"]["VALUE_MONEY"];
									}
								}

								$arShoppingCart = array();
								$bNeedUpdate = false;
								$dbBasket = CSaleBasket::GetList(
									array("NAME" => "ASC"),
									array("ORDER_ID" => $orderId),
									false,
									false,
									array(
										"ID",
										"QUANTITY",
										"CANCEL_CALLBACK_FUNC",
										"MODULE",
										"PRODUCT_ID",
										"PRODUCT_PROVIDER_CLASS",
										"RESERVED",
										"RESERVE_QUANTITY",
										"TYPE",
										"SET_PARENT_ID",
										"PRICE",
										"VAT_RATE",
										"DISCOUNT_PRICE",
										"PRODUCT_XML_ID",
									)
								);

								while ($arBasket = $dbBasket->Fetch())
								{
									$arFields = Array();
									if(!empty($arOrder["items"][$arBasket["PRODUCT_XML_ID"]]))
									{
										if($arBasket["QUANTITY"] != $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["QUANTITY"])
											$arFields["QUANTITY"] = $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["QUANTITY"];
										if($arBasket["PRICE"] != $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["PRICE"])
											$arFields["PRICE"] = $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["PRICE"];
										if($arBasket["VAT_RATE"] != $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["VAT_RATE"])
											$arFields["VAT_RATE"] = $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["VAT_RATE"];
										if($arBasket["DISCOUNT_PRICE"] != $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["DISCOUNT_PRICE"])
											$arFields["DISCOUNT_PRICE"] = $arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["DISCOUNT_PRICE"];

										if(count($arFields)>0)
										{
											$arFields["ID"] = $arBasket["ID"];
											if(DoubleVal($arFields["QUANTITY"]) <= 0)
												$arFields["QUANTITY"] = $arBasket["QUANTITY"];
											$bNeedUpdate = true;
											$arShoppingCart[] = $arFields;
										}
										else
										{
											$arShoppingCart[] = $arBasket;
										}
										//CSaleBasket::Update($arBasket["ID"], $arFields);

										$arOrder["items"][$arBasket["PRODUCT_XML_ID"]]["CHECKED"] = "Y";
									}
									else
									{
										if($arOrder["TRAITS"][GetMessage("CC_BSC1_CANCELED")] != "true" && $orderInfo["CANCELED"] == "N")
										{
											$bNeedUpdate = true;
											//CSaleBasket::Delete($arBasket["ID"]);
										}
									}
								}

								if(!empty($arOrder["items"]))
								{
									foreach ($arOrder["items"] as $itemID => $arItem)
									{
										if ($arItem["CHECKED"] != "Y")
										{
											if ($arItem["TYPE"] == GetMessage("CC_BSC1_ITEM"))
											{
												if ($arBasketFields = $this->prepareProduct4Basket($itemID, $arItem, $orderId, $orderInfo))
												{
													$arShoppingCart[] = $arBasketFields;
													$bNeedUpdate = true;
												}
											}
											elseif ($arItem["TYPE"] == GetMessage("CC_BSC1_SERVICE"))
											{
												if (IntVal($arItem["PRICE"]) != IntVal($orderInfo["PRICE_DELIVERY"]))
													$arOrderFields["PRICE_DELIVERY"] = $arItem["PRICE"];
											}
										}
									}
								}

								if($bNeedUpdate)
								{
									$arErrors = array();
									CSaleBasket::DoSaveOrderBasket($orderId, $orderInfo["LID"], $orderInfo["USER_ID"], $arShoppingCart, $arErrors);
								}

								if(DoubleVal($arOrder["AMOUNT"]) > 0 && $arOrder["AMOUNT"] != $orderInfo["PRICE"])
									$arOrderFields["PRICE"] = $arOrder["AMOUNT"];
								if(DoubleVal($orderInfo["DISCOUNT_VALUE"]) > 0)
									$arOrderFields["DISCOUNT_VALUE"] = 0;
								if(strlen($arOrder["COMMENT"]) > 0 && $arOrder["COMMENT"] != $orderInfo["COMMENTS"])
									$arOrderFields["COMMENTS"] = $arOrder["COMMENT"];
								$arOrderFields["UPDATED_1C"] = "Y";
								if(!empty($arOrderFields))
									CSaleOrder::Update($orderId, $arOrderFields);
							}
							else
							{
								$this->strError .= "\n".GetMessage("CC_BSC1_FINAL_NOT_EDIT", Array("#ID#" => $orderId));
							}
						}

						$arAditFields = Array();
						if($arOrder["TRAITS"][GetMessage("CC_BSC1_CANCELED")] == "true")
						{
							if($orderInfo["CANCELED"] == "N")
								CSaleOrder::CancelOrder($orderInfo["ID"], "Y", $arOrder["COMMENT"]);
							$arAditFields["UPDATED_1C"] = "Y";
						}
						else
						{
							if(strlen($arOrder["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_DATE")])>1)
							{
								if($orderInfo["PAYED"]=="N")
									CSaleOrder::PayOrder($orderInfo["ID"], "Y");
								$arAditFields["PAY_VOUCHER_DATE"] = CDatabase::FormatDate(str_replace("T", " ", $arOrder["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_DATE")]), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANG));
								if(strlen($arOrder["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_NUM")])>0)
									$arAditFields["PAY_VOUCHER_NUM"] = $arOrder["TRAITS"][GetMessage("CC_BSC1_1C_PAYED_NUM")];
								$arAditFields["UPDATED_1C"] = "Y";
							}

							if(strlen($arOrder["TRAITS"][GetMessage("CC_BSC1_1C_DELIVERY_DATE")])>1)
							{
								if($orderInfo["ALLOW_DELIVERY"]=="N")
									CSaleOrder::DeliverOrder($orderInfo["ID"], "Y");
								$arAditFields["DATE_ALLOW_DELIVERY"] = CDatabase::FormatDate(str_replace("T", " ", $arOrder["TRAITS"][GetMessage("CC_BSC1_1C_DELIVERY_DATE")]), "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANG));
								if(strlen($this->arParams["FINAL_STATUS_ON_DELIVERY"])>0 && $orderInfo["STATUS_ID"] != "F" && $orderInfo["STATUS_ID"] != $this->arParams["FINAL_STATUS_ON_DELIVERY"])
									CSaleOrder::StatusOrder($orderInfo["ID"], $this->arParams["FINAL_STATUS_ON_DELIVERY"]);
								$arAditFields["UPDATED_1C"] = "Y";
							}
						}

						if(count($arAditFields)>0)
							CSaleOrder::Update($orderInfo["ID"], $arAditFields);
					}
					else
						$this->strError .= "\n".GetMessage("CC_BSC1_ORDER_NOT_FOUND", Array("#ID#" => $arOrder["ID"]));
				}
				elseif($this->arParams["IMPORT_NEW_ORDERS"] == "Y") // create new order (ofline 1C)
				{
					if(!empty($arOrder["AGENT"]) && strlen($arOrder["AGENT"]["ID"]) > 0)
					{
						$arOrder["PERSON_TYPE_ID"] = 0;
						$arOrder["USER_ID"] = 0;
						$arErrors = array();
						$dbUProp = CSaleOrderUserProps::GetList(array(), array("XML_ID" => $arOrder["AGENT"]["ID"]), false, false, array("ID", "NAME", "USER_ID", "PERSON_TYPE_ID", "XML_ID", "VERSION_1C"));
						if($arUProp = $dbUProp->Fetch())
						{
							$arOrder["USER_ID"] = $arUProp["USER_ID"];
							$arOrder["PERSON_TYPE_ID"] = $arUProp["PERSON_TYPE_ID"];
							$arOrder["USER_PROFILE_ID"] = $arUProp["ID"];
							$arOrder["USER_PROFILE_VERSION"] = $arUProp["VERSION_1C"];

							$dbUPropValue = CSaleOrderUserPropsValue::GetList(array(), array("USER_PROPS_ID" => $arUProp["ID"]));
							while($arUPropValue = $dbUPropValue->Fetch())
							{
								$arOrder["USER_PROPS"][$arUPropValue["ORDER_PROPS_ID"]] = $arUPropValue["VALUE"];
							}
						}
						else
						{
							if(strlen($arOrder["AGENT"]["ID"]) > 0)
							{
								$arAI = explode("#", $arOrder["AGENT"]["ID"]);
								if(IntVal($arAI[0]) > 0)
								{
									$dbUser = CUser::GetByID($arAI[0]);
									if($arU = $dbUser->Fetch())
									{
										if(htmlspecialcharsback(substr(htmlspecialcharsbx($arU["ID"]."#".$arU["LOGIN"]."#".$arU["LAST_NAME"]." ".$arU["NAME"]." ".$arU["SECOND_NAME"]), 0, 80)) == $arOrder["AGENT"]["ID"])
										{
											$arOrder["USER_ID"] = $arU["ID"];
										}
									}
								}
							}

							if(IntVal($arOrder["USER_ID"]) <= 0)
							{
								//create new user
								$arUser = array(
									"NAME"  => $arOrder["AGENT"]["ITEM_NAME"],
									"EMAIL" => $arOrder["AGENT"]["CONTACT"]["MAIL_NEW"],
								);

								if (strlen($arUser["NAME"]) <= 0)
									$arUser["NAME"] = $arOrder["AGENT"]["CONTACT"]["CONTACT_PERSON"];
								if (strlen($arUser["EMAIL"]) <= 0)
									$arUser["EMAIL"] = "buyer".time().GetRandomCode(2)."@".$_SERVER["SERVER_NAME"];
								$arOrder["USER_ID"] = CSaleUser::DoAutoRegisterUser($arUser["EMAIL"], $arUser["NAME"], $this->arParams["SITE_NEW_ORDERS"], $arErrors);
							}
						}

						if(empty($this->arPersonTypesIDs))
						{
							$dbPT = CSalePersonType::GetList(array(), array("ACTIVE" => "Y", "LIDS" => $this->arParams["SITE_NEW_ORDERS"]));
							while($arPT = $dbPT->Fetch())
							{
								$this->arPersonTypesIDs[] = $arPT["ID"];
							}
						}

						if(empty($this->arExportInfo))
						{
							$dbExport = CSaleExport::GetList(array(), array("PERSON_TYPE_ID" => $this->arPersonTypesIDs));
							while($arExport = $dbExport->Fetch())
							{
								$this->arExportInfo[$arExport["PERSON_TYPE_ID"]] = unserialize($arExport["VARS"]);
							}
						}

						if(IntVal($arOrder["PERSON_TYPE_ID"]) <= 0)
						{
							foreach($this->arExportInfo as $pt => $value)
							{
								if(
									(($value["IS_FIZ"] == "Y" && $arOrder["AGENT"]["TYPE"] == "FIZ")
									|| ($value["IS_FIZ"] == "N" && $arOrder["AGENT"]["TYPE"] != "FIZ"))
									)
									$arOrder["PERSON_TYPE_ID"] = $pt;
							}
						}

						if(IntVal($arOrder["PERSON_TYPE_ID"]) > 0)
						{
							$arAgent = $this->arExportInfo[$arOrder["PERSON_TYPE_ID"]];
							foreach($arAgent as $k => $v)
							{
								if((strlen($v["VALUE"]) <= 0 || $v["TYPE"] != "PROPERTY") && (empty($arOrder["USER_PROPS"]) || empty($arOrder["USER_PROPS"][$v["VALUE"]])))
									unset($arAgent[$k]);
							}

							if(IntVal($arOrder["USER_ID"]) > 0)
							{
								$orderFields = array(
									"SITE_ID" => $this->arParams["SITE_NEW_ORDERS"],
									"PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"],
									"PAYED" => "N",
									"CANCELED" => "N",
									"STATUS_ID" => "N",
									"PRICE" => $arOrder["AMOUNT"],
									"CURRENCY" => CSaleLang::GetLangCurrency($this->arParams["SITE_NEW_ORDERS"]),
									"USER_ID" => $arOrder["USER_ID"],
									"TAX_VALUE" => doubleval($arOrder["TAX"]["VALUE_MONEY"]),
									"COMMENTS" => $arOrder["COMMENT"],
									"BASKET_ITEMS" => array(),
									"TAX_LIST" => array(),
									"ORDER_PROP" => array(),
								);
								$arAditFields = array(
									"EXTERNAL_ORDER" => "Y",
									"ID_1C" => $arOrder["ID_1C"],
									"VERSION_1C" => $arOrder["VERSION_1C"],
									"UPDATED_1C" => "Y",
									"DATE_INSERT" => CDatabase::FormatDate($arOrder["DATE"]." ".$arOrder["TIME"], "YYYY-MM-DD HH:MI:SS", CLang::GetDateFormat("FULL", LANG)),
								);

								foreach($arOrder["items"] as $productID => $val)
								{
									$orderFields["BASKET_ITEMS"][] = $this->prepareProduct4Basket($productID, $val, false, $orderFields);
								}

								if(!empty($arOrder["TAX"]))
								{
									$orderFields["TAX_LIST"][] = array(
										"NAME" => $arOrder["TAX"]["NAME"],
										"IS_PERCENT" => "Y",
										"VALUE" => $arOrder["TAX"]["VALUE"],
										"VALUE_MONEY" => $arOrder["TAX"]["VALUE_MONEY"],
										"IS_IN_PRICE" => $arOrder["TAX"]["IS_IN_PRICE"],
									);
								}

								foreach($arAgent as $k => $v)
								{
									if(!empty($arOrder["ORDER_PROPS"][$k]))
									{
										$orderFields["ORDER_PROP"][$v["VALUE"]] = $arOrder["ORDER_PROPS"][$k];
									}
									if(empty($orderFields["ORDER_PROP"][$v["VALUE"]]) && !empty($arOrder["USER_PROPS"][$v["VALUE"]]))
									{
										$orderFields["ORDER_PROP"][$v["VALUE"]] = $arOrder["USER_PROPS"][$v["VALUE"]];
									}
								}

								if($arOrder["ID"] = CSaleOrder::DoSaveOrder($orderFields, $arAditFields, 0, $arErrors))
								{
									$arAditFields = array("UPDATED_1C" => "Y");
									CSaleOrder::Update($arOrder["ID"], $arAditFields);

									//add/update user profile
									if(IntVal($arOrder["USER_PROFILE_ID"]) > 0)
									{
										if($arOrder["USER_PROFILE_VERSION"] != $arOrder["AGENT"]["VERSION"])
											CSaleOrderUserProps::Update($arOrder["USER_PROFILE_ID"], array("VERSION_1C" => $arOrder["AGENT"]["VERSION"], "NAME" => $arOrder["AGENT"]["AGENT_NAME"]));
										$dbUPV = CSaleOrderUserPropsValue::GetList(array(), array("USER_PROPS_ID" =>$arOrder["USER_PROFILE_ID"]));
										while($arUPV = $dbUPV->Fetch())
										{
											$arOrder["AGENT"]["PROFILE_PROPS_VALUE"][$arUPV["ORDER_PROPS_ID"]] = array("ID" => $arUPV["ID"], "VALUE" => $arUPV["VALUE"]);
										}
									}

									if(IntVal($arOrder["USER_PROFILE_ID"]) <= 0 || (IntVal($arOrder["USER_PROFILE_ID"]) > 0 && $arOrder["USER_PROFILE_VERSION"] != $arOrder["AGENT"]["VERSION"]))
									{
										$dbOrderProperties = CSaleOrderProps::GetList(
											array("SORT" => "ASC"),
											array(
												"PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"],
												"ACTIVE" => "Y",
												"UTIL" => "N",
												"USER_PROPS" => "Y",
											),
											false,
											false,
											array("ID", "TYPE", "NAME", "CODE", "USER_PROPS", "SORT", "MULTIPLE")
										);
										while ($arOrderProperties = $dbOrderProperties->Fetch())
										{
											$curVal = $orderFields["ORDER_PROP"][$arOrderProperties["ID"]];

											if (strlen($curVal) > 0)
											{
												if (IntVal($arOrder["USER_PROFILE_ID"]) <= 0)
												{
													$arFields = array(
														"NAME" => $arOrder["AGENT"]["AGENT_NAME"],
														"USER_ID" => $arOrder["USER_ID"],
														"PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"],
														"XML_ID" => $arOrder["AGENT"]["ID"],
														"VERSION_1C" => $arOrder["AGENT"]["VERSION"],
													);
													$arOrder["USER_PROFILE_ID"] = CSaleOrderUserProps::Add($arFields);
												}
												if(IntVal($arOrder["USER_PROFILE_ID"]) > 0)
												{
													$arFields = array(
														"USER_PROPS_ID" => $arOrder["USER_PROFILE_ID"],
														"ORDER_PROPS_ID" => $arOrderProperties["ID"],
														"NAME" => $arOrderProperties["NAME"],
														"VALUE" => $curVal
													);
													if(empty($arOrder["AGENT"]["PROFILE_PROPS_VALUE"][$arOrderProperties["ID"]]))
													{
														CSaleOrderUserPropsValue::Add($arFields);
													}
													elseif($arOrder["AGENT"]["PROFILE_PROPS_VALUE"][$arOrderProperties["ID"]]["VALUE"] != $curVal)
													{
														CSaleOrderUserPropsValue::Update($arOrder["AGENT"]["PROFILE_PROPS_VALUE"][$arOrderProperties["ID"]]["ID"], $arFields);
													}
												}
											}
										}
									}
								}
								else
								{
									$this->strError .= "\n".GetMessage("CC_BSC1_ORDER_ADD_PROBLEM", Array("#ID#" => $arOrder["ID_1C"]));
								}
							}
							else
							{
								$this->strError .= "\n".GetMessage("CC_BSC1_ORDER_USER_PROBLEM", Array("#ID#" => $arOrder["ID_1C"]));
								if(!empty($arErrors))
								{
									foreach($arErrors as $v)
									{
										$this->strError .= "\n".$v["TEXT"];
									}
								}
							}
						}
						else
						{
							$this->strError .= "\n".GetMessage("CC_BSC1_ORDER_PERSON_TYPE_PROBLEM", Array("#ID#" => $arOrder["ID_1C"]));
						}
					}
					else
					{
						$this->strError .= "\n".GetMessage("CC_BSC1_ORDER_NO_AGENT_ID", Array("#ID#" => $arOrder["ID_1C"]));
					}
				}
			}
		}
		elseif($this->arParams["IMPORT_NEW_ORDERS"] == "Y")
		{

			$value = $value[GetMessage("CC_BSC1_AGENT")]["#"];
			$arAgentInfo = $this->collectAgentInfo($value);

			if(!empty($arAgentInfo["AGENT"]))
			{
				$mode = false;
				$arErrors = array();
				$dbUProp = CSaleOrderUserProps::GetList(array(), array("XML_ID" => $arAgentInfo["AGENT"]["ID"]), false, false, array("ID", "NAME", "USER_ID", "PERSON_TYPE_ID", "XML_ID", "VERSION_1C"));
				if($arUProp = $dbUProp->Fetch())
				{
					if($arUProp["VERSION_1C"] != $arAgentInfo["AGENT"]["VERSION"])
					{
						$mode = "update";
						$arAgentInfo["PROFILE_ID"] = $arUProp["ID"];
						$arAgentInfo["PERSON_TYPE_ID"] = $arUProp["PERSON_TYPE_ID"];
					}
				}
				else
				{
					$arUser = array(
						"NAME" => $arAgentInfo["AGENT"]["ITEM_NAME"],
						"EMAIL" => $arAgentInfo["AGENT"]["CONTACT"]["MAIL_NEW"],
					);

					if(strlen($arUser["NAME"]) <= 0)
						$arUser["NAME"] = $arAgentInfo["AGENT"]["CONTACT"]["CONTACT_PERSON"];

					$emServer = $_SERVER["SERVER_NAME"];
					if(strpos($_SERVER["SERVER_NAME"], ".") === false)
						$emServer .= ".bx";
					if(strlen($arUser["EMAIL"]) <= 0)
						$arUser["EMAIL"] = "buyer".time().GetRandomCode(2)."@".$emServer;
					$arAgentInfo["USER_ID"] = CSaleUser::DoAutoRegisterUser($arUser["EMAIL"], $arUser["NAME"], $this->arParams["SITE_NEW_ORDERS"], $arErrors);

					if(IntVal($arAgentInfo["USER_ID"]) > 0)
					{
						$mode = "add";
					}
					else
					{
						$this->strError .= "\n".GetMessage("CC_BSC1_AGENT_USER_PROBLEM", Array("#ID#" => $arAgentInfo["AGENT"]["ID"]));
						if(!empty($arErrors))
						{
							foreach($arErrors as $v)
							{
								$this->strError .= "\n".$v["TEXT"];
							}
						}
					}
				}

				if($mode)
				{
					if(empty($this->arPersonTypesIDs))
					{
						$dbPT = CSalePersonType::GetList(array(), array("ACTIVE" => "Y", "LIDS" => $this->arParams["SITE_NEW_ORDERS"]));
						while($arPT = $dbPT->Fetch())
						{
							$this->arPersonTypesIDs[] = $arPT["ID"];
						}
					}

					if(empty($this->arExportInfo))
					{
						$dbExport = CSaleExport::GetList(array(), array("PERSON_TYPE_ID" => $this->arPersonTypesIDs));
						while($arExport = $dbExport->Fetch())
						{
							$this->arExportInfo[$arExport["PERSON_TYPE_ID"]] = unserialize($arExport["VARS"]);
						}
					}

					if(IntVal($arAgentInfo["PERSON_TYPE_ID"]) <= 0)
					{
						foreach($this->arExportInfo as $pt => $value)
						{
							if(($value["IS_FIZ"] == "Y" && $arAgentInfo["AGENT"]["TYPE"] == "FIZ")
								|| ($value["IS_FIZ"] == "N" && $arAgentInfo["AGENT"]["TYPE"] != "FIZ")
							)
								$arAgentInfo["PERSON_TYPE_ID"] = $pt;
						}
					}

					if(IntVal($arAgentInfo["PERSON_TYPE_ID"]) > 0)
					{
						$arAgentInfo["ORDER_PROPS_VALUE"] = array();
						$arAgentInfo["PROFILE_PROPS_VALUE"] = array();

						$arAgent = $this->arExportInfo[$arAgentInfo["PERSON_TYPE_ID"]];

						foreach($arAgent as $k => $v)
						{
							if(strlen($v["VALUE"]) <= 0 || $v["TYPE"] != "PROPERTY")
								unset($arAgent[$k]);
						}

						foreach($arAgent as $k => $v)
						{
							if(!empty($arAgentInfo["ORDER_PROPS"][$k]))
								$arAgentInfo["ORDER_PROPS_VALUE"][$v["VALUE"]] = $arAgentInfo["ORDER_PROPS"][$k];
						}

						if (IntVal($arAgentInfo["PROFILE_ID"]) > 0)
						{
							CSaleOrderUserProps::Update($arUProp["ID"], array("VERSION_1C" => $arAgentInfo["AGENT"]["VERSION"], "NAME" => $arAgentInfo["AGENT"]["AGENT_NAME"]));
							$dbUPV = CSaleOrderUserPropsValue::GetList(array(), array("USER_PROPS_ID" => $arAgentInfo["PROFILE_ID"]));
							while($arUPV = $dbUPV->Fetch())
							{
								$arAgentInfo["PROFILE_PROPS_VALUE"][$arUPV["ORDER_PROPS_ID"]] = array("ID" => $arUPV["ID"], "VALUE" => $arUPV["VALUE"]);
							}
						}

						if(empty($this->arOrderProps[$arAgentInfo["PERSON_TYPE_ID"]]))
						{
							$dbOrderProperties = CSaleOrderProps::GetList(
								array("SORT" => "ASC"),
								array(
									"PERSON_TYPE_ID" => $arAgentInfo["PERSON_TYPE_ID"],
									"ACTIVE" => "Y",
									"UTIL" => "N",
									"USER_PROPS" => "Y",
								),
								false,
								false,
								array("ID", "TYPE", "NAME", "CODE", "USER_PROPS", "SORT", "MULTIPLE")
							);
							while ($arOrderProperties = $dbOrderProperties->Fetch())
							{
								$this->arOrderProps[$arAgentInfo["PERSON_TYPE_ID"]][] = $arOrderProperties;
							}
						}

						foreach($this->arOrderProps[$arAgentInfo["PERSON_TYPE_ID"]] as $arOrderProperties)
						{
							$curVal = $arAgentInfo["ORDER_PROPS_VALUE"][$arOrderProperties["ID"]];

							if (strlen($curVal) > 0)
							{
								if (IntVal($arAgentInfo["PROFILE_ID"]) <= 0)
								{
									$arFields = array(
										"NAME" => $arAgentInfo["AGENT"]["AGENT_NAME"],
										"USER_ID" => $arAgentInfo["USER_ID"],
										"PERSON_TYPE_ID" => $arAgentInfo["PERSON_TYPE_ID"],
										"XML_ID" => $arAgentInfo["AGENT"]["ID"],
										"VERSION_1C" => $arAgentInfo["AGENT"]["VERSION"],
									);
									$arAgentInfo["PROFILE_ID"] = CSaleOrderUserProps::Add($arFields);
								}
								if(IntVal($arAgentInfo["PROFILE_ID"]) > 0)
								{
									$arFields = array(
										"USER_PROPS_ID" => $arAgentInfo["PROFILE_ID"],
										"ORDER_PROPS_ID" => $arOrderProperties["ID"],
										"NAME" => $arOrderProperties["NAME"],
										"VALUE" => $curVal
									);
									if(empty($arAgentInfo["PROFILE_PROPS_VALUE"][$arOrderProperties["ID"]]))
									{
										CSaleOrderUserPropsValue::Add($arFields);
									}
									elseif($arAgentInfo["PROFILE_PROPS_VALUE"][$arOrderProperties["ID"]]["VALUE"] != $curVal)
									{
										CSaleOrderUserPropsValue::Update($arAgentInfo["PROFILE_PROPS_VALUE"][$arOrderProperties["ID"]]["ID"], $arFields);
									}
								}
							}
						}
					}
					else
					{
						$this->strError .= "\n".GetMessage("CC_BSC1_AGENT_PERSON_TYPE_PROBLEM", Array("#ID#" => $arAgentInfo["AGENT"]["ID"]));
					}
				}
			}
			else
			{
				$this->strError .= "\n".GetMessage("CC_BSC1_AGENT_NO_AGENT_ID");
			}
		}
	}
Exemplo n.º 17
0
 /**
  * Sends product subscription letter
  *
  * @param integer $ID - code product
  * @param string $MODULE - module product
  * @return bool
  */
 function ProductSubscribe($ID, $MODULE)
 {
     $ID = (int) $ID;
     $MODULE = trim($MODULE);
     if ($ID <= 0 || $MODULE == '') {
         return false;
     }
     $arSubscribeProd = array();
     $subscribeProd = COption::GetOptionString("sale", "subscribe_prod", "");
     if ($subscribeProd != '') {
         $arSubscribeProd = unserialize($subscribeProd);
     }
     $rsItemsBasket = CSaleBasket::GetList(array("USER_ID" => "DESC", "LID" => "ASC"), array("PRODUCT_ID" => $ID, "SUBSCRIBE" => "Y", "CAN_BUY" => "N", "ORDER_ID" => "NULL", ">USER_ID" => "0", "MODULE" => $MODULE), false, false, array('ID', 'FUSER_ID', 'USER_ID', 'MODULE', 'PRODUCT_ID', 'CURRENCY', 'DATE_INSERT', 'QUANTITY', 'LID', 'DELAY', 'CALLBACK_FUNC', 'SUBSCRIBE', 'PRODUCT_PROVIDER_CLASS'));
     while ($arItemsBasket = $rsItemsBasket->Fetch()) {
         $LID = $arItemsBasket["LID"];
         if (isset($arSubscribeProd[$LID]) && $arSubscribeProd[$LID]["use"] == "Y") {
             $sendEmailList = array();
             $USER_ID = $arItemsBasket['USER_ID'];
             $arMailProp = array();
             $arPayerProp = array();
             // select person type
             $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC"), array("LID" => $LID), false, false, array('ID'));
             while ($arPersonType = $dbPersonType->Fetch()) {
                 // select ID props is mail
                 $dbProperties = CSaleOrderProps::GetList(array(), array("PERSON_TYPE_ID" => $arPersonType["ID"], "IS_EMAIL" => "Y", "ACTIVE" => "Y"), false, false, array('ID', 'PERSON_TYPE_ID'));
                 while ($arProperties = $dbProperties->Fetch()) {
                     $arMailProp[$arProperties["PERSON_TYPE_ID"]] = $arProperties["ID"];
                 }
                 // select ID props is name
                 $arPayerProp = array();
                 $dbProperties = CSaleOrderProps::GetList(array(), array("PERSON_TYPE_ID" => $arPersonType["ID"], "IS_PAYER" => "Y", "ACTIVE" => "Y"), false, false, array('ID', 'PERSON_TYPE_ID'));
                 while ($arProperties = $dbProperties->Fetch()) {
                     $arPayerProp[$arProperties["PERSON_TYPE_ID"]] = $arProperties["ID"];
                 }
             }
             //end while
             // load user profiles
             $arUserProfiles = CSaleOrderUserProps::DoLoadProfiles($USER_ID);
             $rsUser = CUser::GetByID($USER_ID);
             $arUser = $rsUser->Fetch();
             $userName = $arUser["LAST_NAME"];
             if ($userName != '') {
                 $userName .= " ";
             }
             $userName .= $arUser["NAME"];
             // select of user name to be sent
             $arUserSendName = array();
             if (!empty($arUserProfiles) && !empty($arPayerProp)) {
                 foreach ($arPayerProp as $personType => $namePropID) {
                     if (isset($arUserProfiles[$personType])) {
                         foreach ($arUserProfiles[$personType] as $profiles) {
                             if (isset($profiles["VALUES"][$namePropID]) && $profiles["VALUES"][$namePropID] != '') {
                                 $arUserSendName[$personType] = trim($profiles["VALUES"][$namePropID]);
                                 break;
                             }
                         }
                     }
                 }
             } else {
                 $arUserSendName[] = $userName;
             }
             // select of e-mail to be sent
             $arUserSendMail = array();
             if (!empty($arUserProfiles) && !empty($arMailProp)) {
                 foreach ($arMailProp as $personType => $mailPropID) {
                     if (isset($arUserProfiles[$personType])) {
                         foreach ($arUserProfiles[$personType] as $profiles) {
                             if (isset($profiles["VALUES"][$mailPropID]) && $profiles["VALUES"][$mailPropID] != '') {
                                 $arUserSendMail[$personType] = trim($profiles["VALUES"][$mailPropID]);
                                 break;
                             }
                         }
                     } else {
                         $arUserSendMail[$personType] = $arUser["EMAIL"];
                     }
                 }
             } else {
                 $arUserSendMail[] = $arUser["EMAIL"];
             }
             /** @var $productProvider IBXSaleProductProvider */
             if ($productProvider = CSaleBasket::GetProductProvider($arItemsBasket)) {
                 $arCallback = $productProvider::GetProductData(array("PRODUCT_ID" => $ID, "QUANTITY" => 1, "RENEWAL" => "N", "USER_ID" => $USER_ID, "SITE_ID" => $LID, "BASKET_ID" => $arItemsBasket["ID"]));
             } elseif (isset($arItemsBasket["CALLBACK_FUNC"]) && !empty($arItemsBasket["CALLBACK_FUNC"])) {
                 $arCallback = CSaleBasket::ExecuteCallbackFunction(trim($arItemsBasket["CALLBACK_FUNC"]), $MODULE, $ID, 1, "N", $USER_ID, $LID);
             }
             if (!empty($arCallback)) {
                 $arCallback["QUANTITY"] = 1;
                 $arCallback["DELAY"] = "N";
                 $arCallback["SUBSCRIBE"] = "N";
                 CSaleBasket::Update($arItemsBasket["ID"], $arCallback);
             }
             //send mail
             if (!empty($arUserSendMail) && !empty($arCallback)) {
                 $eventName = "SALE_SUBSCRIBE_PRODUCT";
                 $event = new CEvent();
                 foreach ($arUserSendMail as $personType => $mail) {
                     $checkMail = strtolower($mail);
                     if (isset($sendEmailList[$checkMail])) {
                         continue;
                     }
                     $sendName = $userName;
                     if (isset($arUserSendName[$personType]) && $arUserSendName[$personType] != '') {
                         $sendName = $arUserSendName[$personType];
                     }
                     $arFields = array("EMAIL" => $mail, "USER_NAME" => $sendName, "NAME" => $arCallback["NAME"], "PAGE_URL" => CHTTP::URN2URI($arCallback["DETAIL_PAGE_URL"]), "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $_SERVER["SERVER_NAME"]));
                     $event->Send($eventName, $LID, $arFields, "N");
                     $sendEmailList[$checkMail] = true;
                 }
             }
         }
         // end if bSend
     }
     // end while $arItemsBasket
     return true;
 }
Exemplo n.º 18
0
								array(
									"USER_PROPS_ID" => $arUserResult["PROFILE_ID"],
								),
								false,
								false,
								array("ORDER_PROPS_ID", "ID", "SORT")
							);
						while($arUserPropsValues = $dbUserPropsValues->Fetch())
						{
							$arTmpUserPropsVal[$arUserPropsValues["ORDER_PROPS_ID"]] = $arUserPropsValues["ID"];
						}
					}
					$dbOrderProperties = CSaleOrderProps::GetList(
							array("SORT" => "ASC"),
							array("PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "ACTIVE" => "Y", "UTIL" => "N"),
							false,
							false,
							array("ID", "TYPE", "NAME", "CODE", "USER_PROPS", "SORT")
						);
					while ($arOrderProperties = $dbOrderProperties->Fetch())
					{
						$curVal = $arUserResult["ORDER_PROP"][$arOrderProperties["ID"]];
						if ($arOrderProperties["TYPE"] == "MULTISELECT")
						{
							$curVal = "";

							$countUserResult = count($arUserResult["ORDER_PROP"][$arOrderProperties["ID"]]);
							for ($i = 0; $i < $countUserResult; $i++)
							{
								if ($i > 0)
									$curVal .= ",";
Exemplo n.º 19
0
/**
 * функция по собыитию изминению закааза
 * функция добавляет значения-заглушку  в свойство Адрес доставки
 */
function OnOrderAddHandler($ORDER_ID,$arOrder) {
    if(CModule::IncludeModule("sale")){
        $db_props = CSaleOrderPropsValue::GetOrderProps($ORDER_ID);
        while ($arProps = $db_props->Fetch())
        {
            if($arProps['CODE']=='ADDRESS'){

                $address=true;
            }

        }
        if(!$address){
            if ($arProp = CSaleOrderProps::GetList(array(), array('ORDER_ID'=>$ORDER_ID,'CODE' => 'ADDRESS'))->Fetch()) {
                CSaleOrderPropsValue::Add(array(
                    'NAME'           => $arProp['NAME'],
                    'CODE'           => $arProp['CODE'],
                    'ORDER_PROPS_ID' => $arProp['ID'],
                    'ORDER_ID'       => $ORDER_ID,
                    'VALUE'          => '777'
                ));
            }


        }
    }


}
Exemplo n.º 20
0
            $order['location'] = $order['delivery']['address']['city'];
        }

        if (isset($order['orderType']) && isset($optionsOrderTypes[ $order['orderType'] ])) {
            if (isset($optionsOrderProps[$arFields['PERSON_TYPE_ID']])) {
                foreach ($optionsOrderProps[$arFields['PERSON_TYPE_ID']] as $code => $value) {
                    if (in_array($code, array_keys($order)) === false && isset($optionsOrderProps[$optionsOrderTypes[$order['orderType']]][$code])) {
                        $order[ $code ] = $arUpdateProps[$optionsOrderProps[$arFields['PERSON_TYPE_ID']][$code]]['VALUE'];
                    }
                }
            }

            //update ordertype
            CSaleOrder::Update($order['externalId'], array('PERSON_TYPE_ID' => $optionsOrderTypes[ $order['orderType'] ]));

            $arProp = CSaleOrderProps::GetList(array(), array('PERSON_TYPE_ID' => $optionsOrderTypes[ $order['orderType'] ]));
            $typeParam = array();
            while ($ar = $arProp->Fetch()) {
                $typeParam[ $ar['CODE'] ] = $ar['CODE'];
            }
            foreach (array_diff_key($arUpdateProps, $typeParam) as $code => $param) {
                if (isset($arUpdateProps[$code])) {
                    CSaleOrderPropsValue::Delete($param['ID']);
                }
            }
            $arFields['PERSON_TYPE_ID'] = $optionsOrderTypes[ $order['orderType'] ];
        }

        array_walk_recursive(
            ICrmOrderActions::clearArr($order),
            'ICrmOrderActions::recursiveUpdate',
Exemplo n.º 21
0
						<td valign="middle"><?
							$arPersonType = CSalePersonType::GetByID($arOrder["PERSON_TYPE_ID"]);
							echo htmlspecialcharsEx($arPersonType["NAME"]);
							?>
						</td>
					</tr>
					<?

					//disabled town
					$arTownOrderProps = array();
					$dbProperties = CSaleOrderProps::GetList(
						array(),
						array(
							"ORDER_ID" => $ID,
							"PERSON_TYPE_ID" => $arPersonType["ID"],
							"ACTIVE" => "Y",
							">INPUT_FIELD_LOCATION" => 0
						),
						false,
						false,
						array("INPUT_FIELD_LOCATION")
					);
					while ($arProperties = $dbProperties->Fetch())
						$arTownOrderProps[$arProperties["INPUT_FIELD_LOCATION"]] = $arProperties["INPUT_FIELD_LOCATION"];

					$arEnableTownProps = array();
					$arOrderPropsValue = array();
					$dbOrderProps = CSaleOrderPropsValue::GetOrderProps($ID);
					while ($arOrderProps = $dbOrderProps->Fetch())
					{
						$arOrderPropsValue[] = $arOrderProps;
						if ($arOrderProps["TYPE"] == "LOCATION" && $arOrderProps["ACTIVE"] == "Y" && $arOrderProps["IS_LOCATION"] == "Y" && in_array($arOrderProps["INPUT_FIELD_LOCATION"], $arTownOrderProps))
Exemplo n.º 22
0
	$dbOrderPropsGroup = CSaleOrderPropsGroup::GetList(
				array("SORT" => "ASC", "NAME" => "ASC"),
				array("PERSON_TYPE_ID" => $arUserProps["PERSON_TYPE_ID"]),
				false,
				false,
				array("ID", "PERSON_TYPE_ID", "NAME", "SORT")
			);
	while ($arOrderPropsGroup = $dbOrderPropsGroup->GetNext())
	{
		$arrayTmp[$arOrderPropsGroup["ID"]] = $arOrderPropsGroup;
		$dbOrderProps = CSaleOrderProps::GetList(
				array("SORT" => "ASC", "NAME" => "ASC"),
				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;
			}
Exemplo n.º 23
0
function fGetLocationID($PERSON_TYPE_ID)
{
	$arResult = array();
	$dbProperties = CSaleOrderProps::GetList(
		array("SORT" => "ASC"),
		array("PERSON_TYPE_ID" => $PERSON_TYPE_ID),
		false,
		false,
		array("TYPE", "IS_ZIP", "ID", "SORT")
	);
	while ($arProperties = $dbProperties->Fetch())
	{
		if ($arProperties["TYPE"] == "TEXT")
		{
			if ($arProperties["IS_ZIP"] == "Y")
			{
				$arResult["LOCATION_ZIP_ID"] = $arProperties["ID"];
			}
		}
		elseif ($arProperties["TYPE"] == "LOCATION")
		{
			$arResult["LOCATION_ID"] = $arProperties["ID"];
		}
	}

	return $arResult;
}
Exemplo n.º 24
0
 protected function makeAdditionalOrderProps($address, $buyer, $psId, $deliveryId, $locationId)
 {
     $psId = intval($psId);
     $arResult = array();
     $arPropFilter = array("PERSON_TYPE_ID" => $this->personTypeId, "ACTIVE" => "Y");
     if ($psId != 0) {
         $arPropFilter["RELATED"]["PAYSYSTEM_ID"] = $psId;
         $arPropFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED";
     }
     if (strlen($deliveryId) > 0) {
         $arPropFilter["RELATED"]["DELIVERY_ID"] = $deliveryId;
         $arPropFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED";
     }
     $dbOrderProps = CSaleOrderProps::GetList(array(), $arPropFilter, false, false, array("ID", "CODE"));
     while ($arOrderProps = $dbOrderProps->Fetch()) {
         if ($arOrderProps["CODE"] == $this->orderProps["FIO"] && !empty($buyer)) {
             $fio = $buyer["firstName"];
             if (isset($buyer["middleName"])) {
                 $fio .= ' ' . $buyer["middleName"];
             }
             if (isset($buyer["lastName"])) {
                 $fio .= ' ' . $buyer["lastName"];
             }
             $arResult[$arOrderProps["ID"]] = $fio;
         } elseif ($arOrderProps["CODE"] == $this->orderProps["EMAIL"] && isset($buyer["email"])) {
             $arResult[$arOrderProps["ID"]] = $buyer["email"];
         } elseif ($arOrderProps["CODE"] == $this->orderProps["PHONE"] && isset($buyer["phone"])) {
             $arResult[$arOrderProps["ID"]] = $buyer["phone"];
         } elseif ($arOrderProps["CODE"] == $this->orderProps["ZIP"] && isset($address["postcode"])) {
             $arResult[$arOrderProps["ID"]] = $address["postcode"];
         } elseif ($arOrderProps["CODE"] == $this->orderProps["CITY"]) {
             $arResult[$arOrderProps["ID"]] = $address["city"];
         } elseif ($arOrderProps["CODE"] == $this->orderProps["LOCATION"]) {
             $arResult[$arOrderProps["ID"]] = $locationId;
         } elseif ($arOrderProps["CODE"] == $this->orderProps["ADDRESS"]) {
             $strAddr = "";
             if (isset($address["postcode"])) {
                 $strAddr .= $address["postcode"] . ", ";
             }
             $strAddr .= $address["country"] . ", " . $address["city"] . ", ";
             if (isset($address["street"])) {
                 $strAddr .= GetMessage("SALE_YMH_ADDRESS_STREET") . " " . $address["street"] . ", ";
             }
             if (isset($address["subway"])) {
                 $strAddr .= GetMessage("SALE_YMH_ADDRESS_SUBWAY") . " " . $address["subway"] . ", ";
             }
             $strAddr .= GetMessage("SALE_YMH_ADDRESS_HOUSE") . " " . $address["house"];
             if (isset($address["block"])) {
                 $strAddr .= ", " . GetMessage("SALE_YMH_ADDRESS_BLOCK") . " " . $address["block"];
             }
             if (isset($address["entrance"])) {
                 $strAddr .= ", " . GetMessage("SALE_YMH_ADDRESS_ENTRANCE") . " " . $address["entrance"];
             }
             if (isset($address["entryphone"])) {
                 $strAddr .= ", " . GetMessage("SALE_YMH_ADDRESS_ENTRYPHONE") . " " . $address["entryphone"];
             }
             if (isset($address["floor"])) {
                 $strAddr .= ", " . GetMessage("SALE_YMH_ADDRESS_FLOOR") . " " . $address["floor"];
             }
             if (isset($address["apartment"])) {
                 $strAddr .= ", " . GetMessage("SALE_YMH_ADDRESS_APARTMENT") . " " . $address["apartment"];
             }
             if (isset($address["recipient"])) {
                 $strAddr .= ", " . GetMessage("SALE_YMH_ADDRESS_RECIPIENT") . " " . $address["recipient"];
             }
             if (isset($address["phone"])) {
                 $strAddr .= ", " . GetMessage("SALE_YMH_ADDRESS_PHONE") . " " . $address["phone"];
             }
             $arResult[$arOrderProps["ID"]] = $strAddr;
         }
     }
     return $arResult;
 }
Exemplo n.º 25
0
		</td>
	</tr>
	<?
	$tabControl->EndCustomField("ORDER_PAYED");
}

// order properties related to the delivery and payment systems

$html = "";
$arRelFilter = array();
$arRelFilter["RELATED"]["DELIVERY_ID"] = $str_DELIVERY_ID;
$arRelFilter["RELATED"]["PAYSYSTEM_ID"] = $str_PAY_SYSTEM_ID;

if (isset($arRelFilter["RELATED"]) && (strlen($arRelFilter["RELATED"]["DELIVERY_ID"]) > 0 || intval($arRelFilter["RELATED"]["PAYSYSTEM_ID"]) > 0))
{
	$dbRelatedProps = CSaleOrderProps::GetList(array(), $arRelFilter, false, false, array("*"));
	while ($arRelatedProps = $dbRelatedProps->GetNext())
		$arProps[] = $arRelatedProps;

	$arPropsValues = array();
	if (!$bVarsFromForm)
	{
		$dbPropValue = CSaleOrderPropsValue::GetOrderRelatedProps($ID, $arRelFilter["RELATED"]);
		while ($arValue = $dbPropValue->GetNext())
			$arPropsValues[$arValue["ORDER_PROPS_ID"]] = $arValue["VALUE"];
	}

	$propsHTML = getOrderPropertiesHTML($arProps, $arPropsValues, $LID, $str_USER_ID, $ID, $bVarsFromForm);
}

$tabControl->AddSection("RELATED_PROPS", GetMessage("NEW_ORDER_RELATED_PROPS"));
Exemplo n.º 26
0
		{
			$dbPS = CSalePaySystem::GetList(Array(), Array("LID" => WIZARD_SITE_ID));
			if($arPS = $dbPS->Fetch())
				$paySystem = $arPS["ID"];
		}
		if(IntVal($location) <= 0)
		{
			$dbLocation = CSaleLocation::GetList(Array("ID" => "ASC"), Array("LID" => $lang));
			if($arLocation = $dbLocation->Fetch())
			{
				$location = $arLocation["ID"];
			}
		}
		if(empty($arGeneralInfo["properies"][$personType]))
		{
			$dbProp = CSaleOrderProps::GetList(array(), Array("PERSON_TYPE_ID" => $personType));
			while($arProp = $dbProp->Fetch())
				$arGeneralInfo["properies"][$personType][$arProp["CODE"]] = $arProp;
		}

		if(WIZARD_INSTALL_DEMO_DATA)
		{

			$db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), array("LID" => WIZARD_SITE_ID), false, false, array("ID"));
			while ($ar_sales = $db_sales->Fetch())
			{
				CSaleOrder::Delete($ar_sales["ID"]);
			}
		}

		$arData = Array(
Exemplo n.º 27
0
$tabControl1->Begin();
foreach ($arPersonTypeList as $arPersonType) {
    $tabControl1->BeginNextTab();
    ?>
		<script language="JavaScript">
		<!--
		arPropFieldsList[<?php 
    echo $arPersonType["ID"];
    ?>
] = new Array();
		arPropFieldsNameList[<?php 
    echo $arPersonType["ID"];
    ?>
] = new Array();
		<?php 
    $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $arPersonType["ID"]), false, false, array("ID", "CODE", "NAME", "TYPE", "SORT"));
    $i = -1;
    while ($arOrderProps = $dbOrderProps->Fetch()) {
        $i++;
        ?>
			arPropFieldsList[<?php 
        echo $arPersonType["ID"];
        ?>
][<?php 
        echo $i;
        ?>
] = '<?php 
        echo CUtil::JSEscape(strlen($arOrderProps["CODE"]) > 0 ? $arOrderProps["CODE"] : $arOrderProps["ID"]);
        ?>
';
			arPropFieldsNameList[<?php 
Exemplo n.º 28
0
	"filter_discount_coupon",
	"filter_person_type",
	"filter_user_id",
	"filter_user_login",
	"filter_user_email",
	"filter_group_id",
	"filter_sum_paid",
	"filter_delivery_request_sent",
);

$arOrderProps = array();
$arOrderPropsCode = array();
$dbProps = CSaleOrderProps::GetList(
	array("PERSON_TYPE_ID" => "ASC", "SORT" => "ASC"),
	array(),
	false,
	false,
	array("ID", "NAME", "PERSON_TYPE_NAME", "PERSON_TYPE_ID", "SORT", "IS_FILTERED", "TYPE", "CODE")
);
while ($arProps = $dbProps->GetNext())
{
	if(strlen($arProps["CODE"]) > 0)
	{
		if(empty($arOrderPropsCode[$arProps["CODE"]]))
			$arOrderPropsCode[$arProps["CODE"]] = $arProps;
	}
	else
	{
		$arOrderProps[IntVal($arProps["ID"])] = $arProps;
	}
}
Exemplo n.º 29
0
	/**
	 * <p>Функция удаляет тип плательщика с кодом ID. Так же удаляются все связанные данные. Если есть заказы, привязанные к этому типу плательщика, то тип плательщика не может быть удален. </p>
	 *
	 *
	 *
	 *
	 * @param int $ID  Код типа плательщика.
	 *
	 *
	 *
	 * @return bool <p>Возвращается <i>true</i> в случае успешного удаления и <i>false</i> - в
	 * противном случае.</p><br><br>
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalepersontype/csalepersontype__delete.c2566ed3.php
	 * @author Bitrix
	 */
	public static function Delete($ID)
	{
		global $DB;
		$ID = IntVal($ID);

		$db_orders = CSaleOrder::GetList(
				array("DATE_UPDATE" => "DESC"),
				array("PERSON_TYPE_ID" => $ID),
				false,
				array("nTopCount" => 1),
				array("ID")
			);
		if ($db_orders->Fetch())
		{
			$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGP_ERROR_PERSON_HAS_ORDER").$ID, "ERROR_PERSON_HAS_ORDER");
			return False;
		}

		$db_events = GetModuleEvents("sale", "OnBeforePersonTypeDelete");
		while ($arEvent = $db_events->Fetch())
			if (ExecuteModuleEventEx($arEvent, Array($ID))===false)
				return false;

		$events = GetModuleEvents("sale", "OnPersonTypeDelete");
		while ($arEvent = $events->Fetch())
			ExecuteModuleEventEx($arEvent, Array($ID));

		$DB->Query("DELETE FROM b_sale_pay_system_action WHERE PERSON_TYPE_ID = ".$ID."", true);

		$db_orderProps = CSaleOrderProps::GetList(
				array("PROPS_GROUP_ID" => "ASC"),
				array("PERSON_TYPE_ID" => $ID)
			);
		while ($arOrderProps = $db_orderProps->Fetch())
		{
			$DB->Query("DELETE FROM b_sale_order_props_variant WHERE ORDER_PROPS_ID = ".$arOrderProps["ID"]."", true);
			$DB->Query("DELETE FROM b_sale_order_props_value WHERE ORDER_PROPS_ID = ".$arOrderProps["ID"]."", true);
			$DB->Query("DELETE FROM b_sale_user_props_value WHERE ORDER_PROPS_ID = ".$arOrderProps["ID"]."", true);
		}
		$DB->Query("DELETE FROM b_sale_order_props WHERE PERSON_TYPE_ID = ".$ID."", true);

		$db_orderUserProps = CSaleOrderUserProps::GetList(
				array("NAME" => "ASC"),
				array("PERSON_TYPE_ID" => $ID)
			);
		while ($arOrderUserProps = $db_orderUserProps->Fetch())
		{
			$DB->Query("DELETE FROM b_sale_user_props_value WHERE USER_PROPS_ID = ".$arOrderUserProps["ID"]."", true);
		}
		$DB->Query("DELETE FROM b_sale_user_props WHERE PERSON_TYPE_ID = ".$ID."", true);
		$DB->Query("DELETE FROM b_sale_order_props_group WHERE PERSON_TYPE_ID = ".$ID."", true);
		$DB->Query("DELETE FROM b_sale_person_type_site WHERE PERSON_TYPE_ID=".$ID, true);

		unset($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]);
		return $DB->Query("DELETE FROM b_sale_person_type WHERE ID = ".$ID."", true);
	}
Exemplo n.º 30
0
if ($str_IS_LOCATION == "Y") {
    echo "checked";
}
echo $disMulti;
?>
><br>
			<small><?php 
echo GetMessage("F_IS_LOCATION_DESCR");
?>
</small><br>
		</td>
	</tr>

	<?php 
$arFilter = array("PERSON_TYPE_ID" => IntVal($arPersonType["ID"]), "TYPE" => "TEXT", "ACTIVE" => "Y");
$dbAlterLocList = CSaleOrderProps::GetList(array(), $arFilter, false, false, array("ID", "NAME"));
?>
	<tr id="SHOW_TEXT_LOCATION">
		<td width="40%"><?php 
echo GetMessage("F_ANOTHER_LOCATION");
?>
:</td>
		<td width="60%">
			<select name="INPUT_FIELD_LOCATION" id="INPUT_FIELD_LOCATION">
				<option value=""><?php 
echo GetMessage("NULL_ANOTHER_LOCATION");
?>
</option>
				<?php 
while ($arAlterLocList = $dbAlterLocList->Fetch()) {
    ?>