/** * @param string $siteId Site id. * @return array List of person types for given site. */ public static function getPersonTypesList($siteId) { $dbResultList = \CSalePersonType::GetList("NAME", "ASC", array("LID" => $siteId, "ACTIVE" => "Y")); $arPersonTypes = array(); while ($arPT = $dbResultList->Fetch()) { $arPersonTypes[$arPT['ID']] = $arPT['NAME']; } return $arPersonTypes; }
protected function addPaysysHandler($psid) { $a_ps_act = array(); $fields = array("PAY_SYSTEM_ID" => $psid, "NAME" => Loc::getMessage("DEVTM_ERIP_PS_ACTION_NAME"), "ACTION_FILE" => "/bitrix/php_interface/include/sale_payment/" . $this->MODULE_ID, "NEW_WINDOW" => "N", "HAVE_PREPAY" => "N", "HAVE_RESULT" => "N", "HAVE_ACTION" => "N", "HAVE_PAYMENT" => "Y", "HAVE_RESULT_RECEIVE" => "Y", "ENCODING" => "utf-8"); $db_pt = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array()); while ($pt = $db_pt->Fetch()) { $fields["PERSON_TYPE_ID"] = $pt["ID"]; $id = CSalePaySystemAction::Add($fields); if ($id != false) { $a_ps_act[] = $id; } } return $a_ps_act; }
public static function GetSettingsArray() { $arSaleProps = array(); if (CModule::IncludeModule('sale')) { $rsPersonType = CSalePersonType::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('ACTIVE' => 'Y')); while ($rsPersonRow = $rsPersonType->GetNext()) { $arSaleProps[] = $rsPersonRow; } foreach ($arSaleProps as $arSalePropKey => $arSalePropVal) { $rsOrderProps = CSaleOrderProps::GetList(array('SORT' => 'ASC'), array('PERSON_TYPE_ID' => $arSalePropVal['ID'], 'UTIL' => 'N')); while ($rsOrderPropRow = $rsOrderProps->GetNext()) { $arSaleProps[$arSalePropKey]['PROPERTIES'][] = $rsOrderPropRow; } } } return $arSaleProps; }
if (strlen($arParams["site_id"]) <= 0) { $siteID = "s1"; } $dbSite = CSite::GetByID($siteID); if ($arSite = $dbSite->Fetch()) { $lang = $arSite["LANGUAGE_ID"]; } if (strlen($lang) <= 0) { $lang = "ru"; } $bRus = false; if ($lang == "ru") { $bRus = true; } __IncludeLang(GetLangFileName(dirname(__FILE__) . "/lang/", "/" . basename(__FILE__), $lang)); $dbPerson = CSalePersonType::GetList(array()); if (!$dbPerson->Fetch()) { //Person Types $arGeneralInfo["personType"]["fiz"] = CSalePersonType::Add(array("LID" => $siteID, "NAME" => GetMessage("SALE_WIZARD_PERSON_1"), "SORT" => "100")); $arGeneralInfo["personType"]["ur"] = CSalePersonType::Add(array("LID" => $siteID, "NAME" => GetMessage("SALE_WIZARD_PERSON_2"), "SORT" => "150")); //currecny to site $dbUserAccount = CSaleUserAccount::GetList(array(), array("USER_ID" => 1)); if (!$dbUserAccount->Fetch()) { if ($bRus) { CSaleLang::Add(array("LID" => $siteID, "CURRENCY" => "RUB")); CSaleUserAccount::Add(array("USER_ID" => 1, "CURRENT_BUDGET" => 1000, "CURRENCY" => "RUB")); } else { CSaleLang::Add(array("LID" => $siteID, "CURRENCY" => "USD")); CSaleUserAccount::Add(array("USER_ID" => 1, "CURRENT_BUDGET" => 100, "CURRENCY" => "USD")); } }
/** * @param bool|string $strControlID * @return array|bool */ public static function GetControls($strControlID = false) { $arSalePersonTypes = array(); $arFilter = array(); if (static::$boolInit) { if (isset(static::$arInitParams['SITE_ID'])) $arFilter['LID'] = static::$arInitParams['SITE_ID']; } $rsPersonTypes = CSalePersonType::GetList(array(), $arFilter, false, false, array('ID', 'NAME', 'LIDS')); while ($arPersonType = $rsPersonTypes->Fetch()) { $arPersonType['ID'] = intval($arPersonType['ID']); $arSalePersonTypes[$arPersonType['ID']] = $arPersonType['NAME'].'('.implode(' ', $arPersonType['LIDS']).')'; } $arSalePaySystemList = array(); $arFilter = array(); $rsPaySystems = CSalePaySystem::GetList(array(), $arFilter, false, false, array('ID', 'NAME')); while ($arPaySystem = $rsPaySystems->Fetch()) { $arSalePaySystemList[$arPaySystem['ID']] = $arPaySystem['NAME']; } $arSaleDeliveryList = array(); $arFilter = array(); if (static::$boolInit) { if (isset(static::$arInitParams['SITE_ID'])) $arFilter['LID'] = static::$arInitParams['SITE_ID']; } $rsDeliverySystems = CSaleDelivery::GetList(array(), $arFilter, false, false, array('ID', 'LID', 'NAME')); while ($arDelivery = $rsDeliverySystems->Fetch()) { $arSaleDeliveryList[$arDelivery['ID']] = $arDelivery['NAME'].' ('.$arDelivery['LID'].')'; } $arFilter = array(); if (static::$boolInit) { if (isset(static::$arInitParams['SITE_ID'])) $arFilter['SITE'] = static::$arInitParams['SITE_ID']; } $rsDeliveryHandlers = CSaleDeliveryHandler::GetList(array(),$arFilter); while ($arDeliveryHandler = $rsDeliveryHandlers->Fetch()) { $boolSep = true; if (!empty($arDeliveryHandler['PROFILES']) && is_array($arDeliveryHandler['PROFILES'])) { foreach ($arDeliveryHandler['PROFILES'] as $key => $arProfile) { $arSaleDeliveryList[$arDeliveryHandler['SID'].':'.$key] = $arDeliveryHandler['NAME']; } } } $arLabels = array( BT_COND_LOGIC_EQ => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_EQ_LABEL'), BT_COND_LOGIC_NOT_EQ => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_NOT_EQ_LABEL'), BT_COND_LOGIC_GR => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_GR_LABEL'), BT_COND_LOGIC_LS => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_LS_LABEL'), BT_COND_LOGIC_EGR => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_EGR_LABEL'), BT_COND_LOGIC_ELS => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_ELS_LABEL') ); $arLabelsWeight = array( BT_COND_LOGIC_EQ => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_EQ_LABEL'), BT_COND_LOGIC_NOT_EQ => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_NOT_EQ_LABEL'), BT_COND_LOGIC_GR => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_GR_LABEL'), BT_COND_LOGIC_LS => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_LS_LABEL'), BT_COND_LOGIC_EGR => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_EGR_LABEL'), BT_COND_LOGIC_ELS => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_ELS_LABEL') ); $arControlList = array( 'CondSaleOrderSumm' => array( 'ID' => 'CondSaleOrderSumm', 'FIELD' => 'ORDER_PRICE', 'FIELD_TYPE' => 'double', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_ORDER_SUMM_LABEL_EXT'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_ORDER_SUMM_PREFIX_EXT'), 'LOGIC' => static::GetLogicEx(array_keys($arLabels), $arLabels), 'JS_VALUE' => array( 'type' => 'input' ) ), 'CondSalePersonType' => array( 'ID' => 'CondSalePersonType', 'FIELD' => 'PERSON_TYPE_ID', 'FIELD_TYPE' => 'int', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PERSON_TYPE_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PERSON_TYPE_PREFIX'), 'LOGIC' => static::GetLogic(array(BT_COND_LOGIC_EQ, BT_COND_LOGIC_NOT_EQ)), 'JS_VALUE' => array( 'type' => 'select', 'multiple' => 'Y', 'values' => $arSalePersonTypes, 'show_value' => 'Y' ), 'PHP_VALUE' => array( 'VALIDATE' => 'list' ) ), 'CondSalePaySystem' => array( 'ID' => 'CondSalePaySystem', 'FIELD' => 'PAY_SYSTEM_ID', 'FIELD_TYPE' => 'int', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PAY_SYSTEM_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PAY_SYSTEM_PREFIX'), 'LOGIC' => static::GetLogic(array(BT_COND_LOGIC_EQ, BT_COND_LOGIC_NOT_EQ)), 'JS_VALUE' => array( 'type' => 'select', 'multiple' => 'Y', 'values' => $arSalePaySystemList, 'show_value' => 'Y' ), 'PHP_VALUE' => array( 'VALIDATE' => 'list' ) ), 'CondSaleDelivery' => array( 'ID' => 'CondSaleDelivery', 'FIELD' => 'DELIVERY_ID', 'FIELD_TYPE' => 'string', 'FIELD_LENGTH' => 50, 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_DELIVERY_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_DELIVERY_PREFIX'), 'LOGIC' => static::GetLogic(array(BT_COND_LOGIC_EQ, BT_COND_LOGIC_NOT_EQ)), 'JS_VALUE' => array( 'type' => 'select', 'multiple' => 'Y', 'values' => $arSaleDeliveryList, 'show_value' => 'Y' ), 'PHP_VALUE' => array( 'VALIDATE' => 'list' ) ), 'CondSaleOrderWeight' => array( 'ID' => 'CondSaleOrderWeight', 'FIELD' => 'ORDER_WEIGHT', 'FIELD_TYPE' => 'double', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_SALE_ORDER_WEIGHT_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_SALE_ORDER_WEIGHT_PREFIX'), 'LOGIC' => static::GetLogicEx(array_keys($arLabelsWeight), $arLabelsWeight), 'JS_VALUE' => array( 'type' => 'input' ) ) ); foreach ($arControlList as &$control) { $control['EXECUTE_MODULE'] = 'sale'; $control['MODULE_ID'] = 'sale'; $control['MODULE_ENTITY'] = 'sale'; $control['ENTITY'] = 'ORDER'; $control['MULTIPLE'] = 'N'; $control['GROUP'] = 'N'; } unset($control); if ($strControlID === false) { return $arControlList; } elseif (isset($arControlList[$strControlID])) { return $arControlList[$strControlID]; } else { return false; } }
/** * Function returns reference data as shared cache between this component and sale.personal.order.list. * * @throws Exception * @return void */ protected function obtainDataReferences() { if ($this->startCache(array('spo-shared'))) { try { $cachedData = array(); ///////////////////// ///////////////////// // Person type $dbPType = CSalePersonType::GetList(array("SORT" => "ASC")); while ($arPType = $dbPType->Fetch()) { $cachedData['PERSON_TYPE'][$arPType["ID"]] = $arPType; } // Save statuses for Filter form $dbStatus = CSaleStatus::GetList(array("SORT" => "ASC"), array("LID" => LANGUAGE_ID)); while ($arStatus = $dbStatus->Fetch()) { $cachedData['STATUS'][$arStatus["ID"]] = $arStatus; } $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC")); while ($arPaySystem = $dbPaySystem->Fetch()) { $cachedData['PAYSYS'][$arPaySystem["ID"]] = $arPaySystem; } $dbDelivery = CSaleDelivery::GetList(array("SORT" => "ASC")); while ($arDelivery = $dbDelivery->Fetch()) { $cachedData['DELIVERY'][$arDelivery["ID"]] = $arDelivery; } $dbDelivery = CSaleDeliveryHandler::GetList(array(), array(array("SITE_ID" => SITE_ID))); while ($arDeliveryHandler = $dbDelivery->Fetch()) { $cachedData['DELIVERY_HANDLERS'][$arDeliveryHandler["SID"]] = $arDeliveryHandler; } ///////////////////// ///////////////////// } catch (Exception $e) { $this->abortCache(); throw $e; } $this->endCache($cachedData); } else { $cachedData = $this->getCacheData(); } $this->dbResult = array_merge($this->dbResult, $this->adaptCachedReferences($cachedData)); }
$LID = $str_LID; $str_DELIVERY_ID = (isset($_POST["DELIVERY_ID"]) && strlen($_POST["DELIVERY_ID"]) > 0) ? $_POST["DELIVERY_ID"] : $str_DELIVERY_ID; $str_PAY_SYSTEM_ID = (isset($_POST["PAY_SYSTEM_ID"]) && intval($_POST["PAY_SYSTEM_ID"]) > 0) ? intval($_POST["PAY_SYSTEM_ID"]) : $str_PAY_SYSTEM_ID; } if (!isset($str_TAX_VALUE) OR $str_TAX_VALUE == "") $str_TAX_VALUE = 0; if (intval($str_PERSON_TYPE_ID) <= 0) { $str_PERSON_TYPE_ID = 0; $arFilter = array(); $arFilter["ACTIVE"] = "Y"; if(strlen($LID) > 0) $arFilter["LID"] = $LID; $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), $arFilter, false, array('nTopCount' => 1), array('ID')); if($arPersonType = $dbPersonType->Fetch()) $str_PERSON_TYPE_ID = $arPersonType["ID"]; } $arFuserItems = CSaleUser::GetList(array("USER_ID" => intval($str_USER_ID))); $FUSER_ID = $arFuserItems["ID"]; /* * form select site */ if ((!isset($LID) OR $LID == "") AND (defined('BX_PUBLIC_MODE') OR BX_PUBLIC_MODE == 1) ) { $arSitesShop = array(); $arSitesTmp = array(); $rsSites = CSite::GetList($by="id", $order="asc", array("ACTIVE" => "Y"));
function fGetBuyerType($PERSON_TYPE_ID, $LID, $USER_ID = '', $ORDER_ID = 0, $formVarsSubmit = false) { global $locationZipID, $locationID, $DELIVERY_LOCATION, $DELIVERY_LOCATION_ZIP; $resultHtml = "<script>locationZipID = 0;locationID = 0;</script><table width=\"100%\" id=\"order_type_props\" class=\"edit-table\">"; //select person type $arPersonTypeList = array(); $personTypeSelect = "<select name='buyer_type_id' id='buyer_type_id' OnChange='fBuyerChangeType(this);' >"; $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y")); while ($arPersonType = $dbPersonType->GetNext()) { if (!in_array($LID, $arPersonType["LIDS"])) continue; if (!isset($PERSON_TYPE_ID) OR $PERSON_TYPE_ID == "") $PERSON_TYPE_ID = $arPersonType["ID"]; $class = ""; if (intval($arPersonType["ID"]) == intval($PERSON_TYPE_ID)) $class = " selected"; $personTypeSelect .= "<option value=\"".$arPersonType["ID"]."\" ".$class.">".$arPersonType["NAME"]." [".$arPersonType["ID"]."]</option>"; } $personTypeSelect .= "</select>"; $userComment = ""; $userDisplay = "none"; if (intval($ORDER_ID) > 0) { $dbOrder = CSaleOrder::GetList( array(), array("ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array() ); $arOrder = $dbOrder->Fetch(); $userComment = $arOrder["USER_DESCRIPTION"]; $userDisplay = "table-row"; } if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerNew") $userDisplay = "none"; elseif ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") $userDisplay = "table-row"; $resultHtml .= "<tr id=\"btnBuyerExistField\" style=\"display:".$userDisplay."\"> <td class=\"adm-detail-content-cell-l\" width=\"40%\">".GetMessage("NEWO_BUYER").":</td> <td class=\"adm-detail-content-cell-r\" width=\"60%\"><div id=\"user_name\">".fGetUserName($USER_ID)."</div></td></tr>"; $resultHtml .= "<tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\" width=\"40%\">".GetMessage("SOE_PERSON_TYPE").":</td> <td class=\"adm-detail-content-cell-r\" width=\"60%\">".$personTypeSelect."</td> </tr>"; $bShowTrProfile = "none"; if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") $bShowTrProfile = "table-row"; $resultHtml .= "<tr id=\"buyer_profile_display\" style=\"display:".$bShowTrProfile."\" class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\">".GetMessage("NEWO_BUYER_PROFILE").":</td> <td class=\"adm-detail-content-cell-r\"> <div id=\"buyer_profile_select\">"; if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") { $resultHtml .= fUserProfile(intval($_POST["user_id"]), intval($_POST["buyer_type_id"]), $default = ''); } $resultHtml .= "</div></td> </tr>"; if ($ORDER_ID <= 0) { $arCountProps = fGetCountProfileProps($PERSON_TYPE_ID); $resultHtml .= "<tr id=\"btnBuyerNewField\">"; if (count($arCountProps) < 3) { $resultHtml .= "<td colspan=2> <table width=\"100%\" class=\"edit-table\" >"; if (intval($arCountProps["IS_EMAIL"]) <= 0) $resultHtml .= "<tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\" width=\"40%\">".GetMessage("NEWO_BUYER_REG_MAIL")."</td> <td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_EMAIL\" size=\"30\" value=\"".htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_EMAIL"]))."\" tabindex=\"1\" /></td> </tr>"; if (intval($arCountProps["IS_PAYER"]) <= 0) $resultHtml .= "<tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\">".GetMessage("NEWO_BUYER_REG_LASTNAME")."</td> <td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_LAST_NAME\" size=\"30\" value=\"".htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_LAST_NAME"]))."\" tabindex=\"3\" /></td> </tr> <tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\">".GetMessage("NEWO_BUYER_REG_NAME")."</td> <td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_NAME\" size=\"30\" value=\"".htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_NAME"]))."\" tabindex=\"2\" /></td> </tr>"; $resultHtml .= "</table> </td>"; } $resultHtml .= "</tr>"; } $arPropertiesList = array(); $dbProperties = CSaleOrderProps::GetList( array("GROUP_SORT" => "ASC", "PROPS_GROUP_ID" => "ASC", "SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y", "RELATED" => false), false, false, array("*") ); while($property = $dbProperties->Fetch()) { $arPropertiesList[$property['ID']] = $property; } // getting values $arPropValues = array(); if ($formVarsSubmit) // from request { $locationIndexForm = ""; foreach ($_POST as $key => $value) { if (substr($key, 0, strlen("CITY_ORDER_PROP_")) == "CITY_ORDER_PROP_") { $arPropValues[intval(substr($key, strlen("CITY_ORDER_PROP_")))] = htmlspecialcharsbx($value); $locationIndexForm = intval(substr($key, strlen("CITY_ORDER_PROP_"))); } if (substr($key, 0, strlen("ORDER_PROP_")) == "ORDER_PROP_") { if ($locationIndexForm != intval(substr($key, strlen("ORDER_PROP_"))) && !is_array($value)) $arPropValues[intval(substr($key, strlen("ORDER_PROP_")))] = htmlspecialcharsbx($value); } } $userComment = $_POST["USER_DESCRIPTION"]; } elseif ($ORDER_ID == "" AND $USER_ID != "") // from profile { //profile $userProfile = array(); $userProfile = CSaleOrderUserProps::DoLoadProfiles($USER_ID, $PERSON_TYPE_ID); $arPropValues = $userProfile[$PERSON_TYPE_ID]["VALUES"]; } elseif ($ORDER_ID != "") // from order properties { $dbPropValuesList = CSaleOrderPropsValue::GetList( array(), array("ORDER_ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array("ID", "ORDER_PROPS_ID", "NAME", "VALUE", "CODE") ); while ($arPropValuesList = $dbPropValuesList->Fetch()) { // from db if(CSaleLocation::isLocationProMigrated() && $arPropertiesList[$arPropValuesList['ORDER_PROPS_ID']]['TYPE'] == 'LOCATION') $arPropValuesList["VALUE"] = CSaleLocation::getLocationIDbyCODE($arPropValuesList["VALUE"]); $arPropValues[intval($arPropValuesList["ORDER_PROPS_ID"])] = htmlspecialcharsbx($arPropValuesList["VALUE"]); } } $location2townFldMap = array(); $arDisableFieldForLocation = array(); //select field (town) for disable $dbProperties = CSaleOrderProps::GetList( array(), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y", ">INPUT_FIELD_LOCATION" => 0), false, false, array("INPUT_FIELD_LOCATION") ); while ($arProperties = $dbProperties->Fetch()) { $arDisableFieldForLocation[$arProperties["INPUT_FIELD_LOCATION"]] = $arProperties["INPUT_FIELD_LOCATION"]; } //show town if location is another $arEnableTownProps = array(); $dbOrderProps = CSaleOrderPropsValue::GetOrderProps($ORDER_ID); while ($arOrderProps = $dbOrderProps->Fetch()) { if($arOrderProps["TYPE"] == "LOCATION" && $arOrderProps["ACTIVE"] == "Y" && $arOrderProps["IS_LOCATION"] == "Y") { if (in_array($arOrderProps["INPUT_FIELD_LOCATION"], $arDisableFieldForLocation)) { if(CSaleLocation::isLocationProMigrated()) { if(CSaleLocation::checkLocationIsAboveCity($arPropValues[$arOrderProps["ORDER_PROPS_ID"]])) unset($arDisableFieldForLocation[$arOrderProps["INPUT_FIELD_LOCATION"]]); } else { $arLocation = CSaleLocation::GetByID($arPropValues[$arOrderProps["ORDER_PROPS_ID"]]); if (intval($arLocation["CITY_ID"]) <= 0) unset($arDisableFieldForLocation[$arOrderProps["INPUT_FIELD_LOCATION"]]); } } $location2townFldMap[$arOrderProps['ORDER_PROPS_ID']] = $arOrderProps['INPUT_FIELD_LOCATION']; } } $propertyGroupID = -1; foreach($arPropertiesList as $arProperties) { if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) { $resultHtml .= "<tr><td colspan=\"2\" style=\"text-align:center;font-weight:bold;font-size:14px;color:rgb(75, 98, 103);\" >".htmlspecialcharsEx($arProperties["GROUP_NAME"])."\n</td>\n</tr>"; $propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]); } if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) $propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]); $adit = ""; $requiredField = ""; if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") { $adit = " class=\"adm-detail-required-field\""; $requiredField = " class=\"adm-detail-content-cell-l\""; } $isTownProperty = in_array($arProperties["ID"], $location2townFldMap) || $arProperties['CODE'] == 'CITY'; //delete town from location if (in_array($arProperties["ID"], $arDisableFieldForLocation)) $resultHtml .= "<tr style=\"display:none;\" id=\"town_location_".$arProperties["ID"]."\"".$adit.">\n"; else $resultHtml .= "<tr id=\"town_location_".$arProperties["ID"]."\"".$adit.($isTownProperty ? " class=\"-bx-order-property-city\"" : '').">\n"; if(($arProperties["TYPE"] == "MULTISELECT" || $arProperties["TYPE"] == "TEXTAREA" || $arProperties["TYPE"] == "FILE") || ($ORDER_ID <= 0 && $arProperties["IS_PROFILE_NAME"] == "Y") ) $resultHtml .= "<td valign=\"top\" class=\"adm-detail-content-cell-l\" width=\"40%\">\n"; else $resultHtml .= "<td align=\"right\" width=\"40%\" ".$requiredField.">\n"; $resultHtml .= $arProperties["NAME"].":</td>"; $curVal = $arPropValues[intval($arProperties["ID"])]; if($arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PAYER"] == "Y") { if(strlen($arProperties["DEFAULT_VALUE"]) <= 0 && intval($USER_ID) > 0) { $rsUser = CUser::GetByID($USER_ID); if ($arUser = $rsUser->Fetch()) { if($arProperties["IS_EMAIL"] == "Y") $arProperties["DEFAULT_VALUE"] = $arUser["EMAIL"]; else { if (strlen($arUser["LAST_NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= $arUser["LAST_NAME"]; if (strlen($arUser["NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= " ".$arUser["NAME"]; if (strlen($arUser["SECOND_NAME"]) > 0 AND strlen($arUser["NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= " ".$arUser["SECOND_NAME"]; } } } } $resultHtml .= "<td class=\"adm-detail-content-cell-r\" width=\"60%\">"; if ($arProperties["TYPE"] == "CHECKBOX") { $resultHtml .= '<input type="checkbox" class="inputcheckbox" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" value="Y"'; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y") $resultHtml .= " checked"; $resultHtml .= '>'; } elseif ($arProperties["TYPE"] == "TEXT") { $change = ""; if ($arProperties["IS_ZIP"] == "Y") { $DELIVERY_LOCATION_ZIP = $curVal; $resultHtml .= '<script> locationZipID = \''.$arProperties["ID"].'\';</script>'; $locationZipID = ((isset($curVal)) ? htmlspecialcharsEx($curVal) : htmlspecialcharsex($arProperties["DEFAULT_VALUE"])); } if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0) { $resultHtml .= '<div id="BREAK_NAME"'; if ($ORDER_ID > 0 || ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist")) $resultHtml .= ' style="display:none"'; $resultHtml .= '>'; $BREAK_LAST_NAME_TMP = GetMessage('NEWO_BREAK_LAST_NAME'); if (isset($_REQUEST["BREAK_LAST_NAME"]) && strlen($_REQUEST["BREAK_LAST_NAME"]) > 0) $BREAK_LAST_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_LAST_NAME"])); $NEWO_BREAK_NAME_TMP = GetMessage('NEWO_BREAK_NAME'); if (isset($_REQUEST["BREAK_NAME"]) && strlen($_REQUEST["BREAK_NAME"]) > 0) $NEWO_BREAK_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_NAME"])); $BREAK_SECOND_NAME_TMP = GetMessage('NEWO_BREAK_SECOND_NAME'); if (isset($_REQUEST["BREAK_SECOND_NAME"]) && strlen($_REQUEST["BREAK_SECOND_NAME"]) > 0) $BREAK_SECOND_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_SECOND_NAME"])); $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_LAST_NAME\" id=\"BREAK_LAST_NAME\" size=\"30\" value=\"".$BREAK_LAST_NAME_TMP."\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_NAME\" id=\"BREAK_NAME_BUYER\" size=\"30\" value=\"".$NEWO_BREAK_NAME_TMP."\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_SECOND_NAME\" id=\"BREAK_SECOND_NAME\" size=\"30\" value=\"".$BREAK_SECOND_NAME_TMP."\" /></div>"; $resultHtml .= '</div>'; $resultHtml .= '<div id="NO_BREAK_NAME"'; if ($ORDER_ID <= 0) $tmpNone = ' style="display:none"'; if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") $tmpNone = ' style="display:block"'; $resultHtml .= $tmpNone.'>'; } $resultHtml .= '<input type="text" maxlength="250" '; $resultHtml .= 'size="30" '; $resultHtml .= 'value="'.((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]).'" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= ($arProperties["IS_ZIP"] == "Y" ? 'class="-bx-property-is-zip" ' : ''); $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '.$change.'>'; if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0) $resultHtml .= '</div>'; } elseif ($arProperties["TYPE"] == "SELECT") { $size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5; $resultHtml .= '<select name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'size='.$size.' '; $resultHtml .= 'class="typeselect">'; $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) $resultHtml .= " selected"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "MULTISELECT") { $size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5; $resultHtml .= '<select multiple name="ORDER_PROP_'.$arProperties["ID"].'[]" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'size='.$size.' '; $resultHtml .= 'class="typeselect" type="multyselect">'; if (!is_array($curVal)) { if (strlen($curVal) > 0 OR $ORDER_ID != "") $curVal = explode(",", $curVal); else $curVal = explode(",", $arProperties["DEFAULT_VALUE"]); $arCurVal = array(); $countCurVal = count($curVal); for ($i = 0; $i < $countCurVal; $i++) $arCurVal[$i] = Trim($curVal[$i]); } else $arCurVal = $curVal; $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if (in_array($arVariants["VALUE"], $arCurVal)) $resultHtml .= " selected"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "TEXTAREA") { $resultHtml .= '<textarea '; $resultHtml .= 'rows="4" '; $resultHtml .= 'cols="40" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" type="textarea">'; $resultHtml .= ((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]); $resultHtml .= '</textarea>'; } elseif ($arProperties["TYPE"] == "LOCATION") { $countryID = ""; $cityID = ""; $cityList = ""; $DELIVERY_LOCATION = $arPropValues[intval($arProperties["ID"])]; $locationID = $curVal; $tmpLocation = ''; ob_start(); ?> <?if($arProperties['IS_LOCATION'] == 'Y'):?> <? $funcId = 'changeLocationCity_'.$arProperties['ID']; ?> <script> window['<?php echo $funcId; ?> '] = function(node, info){ fChangeLocationCity(node, info, <?php echo intval($location2townFldMap[$arProperties['ID']]); ?> ) } window.orderNewLocationPropId = <?php echo intval($arProperties['ID']); ?> ; </script> <?endif?> <? CSaleLocation::proxySaleAjaxLocationsComponent( array( "SITE_ID" => $LID, "AJAX_CALL" => "N", "COUNTRY_INPUT_NAME" => "ORDER_PROP_".$arProperties["ID"], "REGION_INPUT_NAME" => "REGION_ORDER_PROP_".$arProperties["ID"], "CITY_INPUT_NAME" => "CITY_ORDER_PROP_".$arProperties["ID"], "CITY_OUT_LOCATION" => "Y", "ALLOW_EMPTY_CITY" => "Y", "LOCATION_VALUE" => $curVal, "COUNTRY" => "", "ONCITYCHANGE" => "fChangeLocationCity();", "PUBLIC" => "N", ), array( "JS_CALLBACK" => $arProperties['IS_LOCATION'] == 'Y' ? $funcId : false, "ID" => $curVal, "CODE" => '', "SHOW_DEFAULT_LOCATIONS" => 'Y', "JS_CONTROL_GLOBAL_ID" => intval($arProperties["ID"]) ), '', false, 'location-selector-wrapper' ); $tmpLocation = ob_get_contents(); ob_end_clean(); $resultHtml .= '<script>var locationID = \''.$arProperties["ID"].'\';</script>'; $resultHtml .= $tmpLocation; } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); $resultHtml .= '<div id="ORDER_PROP_'.$arProperties["ID"].'" type="radio">';// type="radio" while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<input type="radio" class="inputradio" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) $resultHtml .= " checked"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'<br>'; } $resultHtml .= '</div>'; } elseif ($arProperties["TYPE"] == "FILE") { $arValues = array(); $arTmpValues = array(); if (isset($arPropValues[$arProperties["ID"]])) { $arTmpValues = explode(", ", $arPropValues[$arProperties["ID"]]); foreach ($arTmpValues as $key => $value) $arValues[$value] = $value; } $resultHtml .= fShowFilePropertyField("ORDER_PROP_".$arProperties["ID"], $arProperties, $arValues, $arProperties["SIZE1"], $formVarsSubmit); } if (strlen($arProperties["DESCRIPTION"]) > 0) { $resultHtml .= "<br><small>".htmlspecialcharsEx($arProperties["DESCRIPTION"])."</small>"; } $resultHtml .= "\n</td>\n</tr>"; }//end while $resultHtml .= "<tr>\n<td valign=\"top\" class=\"adm-detail-content-cell-l\">".GetMessage("SOE_BUYER_COMMENT").": </td> <td class=\"adm-detail-content-cell-r\"> <textarea name=\"USER_DESCRIPTION\" rows=\"4\" cols=\"40\">".htmlspecialcharsbx($userComment)."</textarea> </td> </tr>"; $resultHtml .= "</table>"; return $resultHtml; }
/** * Function returns reference data as shared cache between this component and sale.personal.order.list. * * @throws Exception * @return void */ protected function obtainDataReferences() { if ($this->startCache(array('spo-shared'))) { try { $cachedData = array(); ///////////////////// ///////////////////// // Person type $dbPType = CSalePersonType::GetList(array("SORT" => "ASC")); while ($arPType = $dbPType->Fetch()) { $cachedData['PERSON_TYPE'][$arPType["ID"]] = $arPType; } // Save statuses for Filter form $dbStatus = CSaleStatus::GetList(array("SORT" => "ASC"), array("LID" => LANGUAGE_ID)); while ($arStatus = $dbStatus->Fetch()) { $cachedData['STATUS'][$arStatus["ID"]] = $arStatus; } $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC")); while ($arPaySystem = $dbPaySystem->Fetch()) { $arPaySystem['NAME'] = htmlspecialcharsbx($arPaySystem['NAME']); $cachedData['PAYSYS'][$arPaySystem["ID"]] = $arPaySystem; } $cachedData['DELIVERY'] = array(); $shipmentIds = array(); foreach ($this->dbResult['SHIPMENT'] as $shipment) { $shipmentIds[] = $shipment['DELIVERY_ID']; } $dbDelivery = \Bitrix\Sale\Delivery\Services\Table::getList(array('select' => array('ID', 'NAME', 'PARENT_NAME' => 'PARENT.NAME', 'PARENT_CLASS_NAME' => 'PARENT.CLASS_NAME'), 'filter' => array('ID' => $shipmentIds))); $deliveryService = array(); while ($delivery = $dbDelivery->fetch()) { $deliveryService[$delivery['ID']] = $delivery; } foreach ($deliveryService as $delivery) { $cachedData['DELIVERY'][$delivery["ID"]] = array(); if ($delivery['PARENT_NAME']) { $cachedData['DELIVERY'][$delivery["ID"]]['NAME'] = htmlspecialcharsbx($delivery['PARENT_NAME'] . ':' . $delivery['NAME']); } else { $cachedData['DELIVERY'][$delivery["ID"]]['NAME'] = htmlspecialcharsbx($delivery['NAME']); } } ///////////////////// ///////////////////// } catch (Exception $e) { $this->abortCache(); throw $e; } $this->endCache($cachedData); } else { $cachedData = $this->getCacheData(); } $this->dbResult = array_merge($this->dbResult, $this->adaptCachedReferences($cachedData)); }
} } $arResultItem["DETAIL_PICTURE_SRC"] = ""; if (isset($arResultItem["DETAIL_PICTURE"]) && intval($arResultItem["DETAIL_PICTURE"]) > 0) { $arImage = CFile::GetFileArray($arResultItem["DETAIL_PICTURE"]); if ($arImage) { $arFileTmp = CFile::ResizeImageGet($arImage, array("width" => "110", "height" => "110"), BX_RESIZE_IMAGE_PROPORTIONAL, true); $arResultItem["DETAIL_PICTURE_SRC"] = $arFileTmp["src"]; } } } if (isset($arResultItem)) { unset($arResultItem); } /* Person Type Begin */ $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("LID" => SITE_ID, "ACTIVE" => "Y")); while ($arPersonType = $dbPersonType->GetNext()) { if ($arUserResult["PERSON_TYPE_ID"] == $arPersonType["ID"] || IntVal($arUserResult["PERSON_TYPE_ID"]) <= 0) { $arUserResult["PERSON_TYPE_ID"] = $arPersonType["ID"]; $arPersonType["CHECKED"] = "Y"; } $arResult["PERSON_TYPE"][$arPersonType["ID"]] = $arPersonType; } foreach (GetModuleEvents("sale", "OnSaleComponentOrderOneStepPersonType", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(&$arResult, &$arUserResult, &$arParams)); } /* Person Type End */ /* User Profiles Begin */ $bFirst = false; $dbUserProfiles = CSaleOrderUserProps::GetList(array("DATE_UPDATE" => "DESC"), array("PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "USER_ID" => IntVal($USER->GetID()))); while ($arUserProfiles = $dbUserProfiles->GetNext()) {
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die; } $arCurrencyTypes = array("" => GetMessage("SPT_ALLOWED_CURRENCY_ALL")); if (CModule::IncludeModule("currency")) { $rsCurrency = CCurrency::GetList($by = "name", $order = "desc", LANGUAGE_ID); while ($arCurrency = $rsCurrency->Fetch()) { $arCurrencyTypes[$arCurrency["CURRENCY"]] = $arCurrency["FULL_NAME"]; } } $arPersonTypes = array(); if (CModule::IncludeModule('sale')) { $dbPerson = CSalePersonType::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('ACTIVE' => 'Y')); while ($arPerson = $dbPerson->fetch()) { $arPersonTypes[$arPerson['ID']] = $arPerson['NAME']; } } $arComponentParameters = array("PARAMETERS" => array("ALLOWED_CURRENCY" => array("PARENT" => "BASE", "NAME" => GetMessage("SPT_ALLOWED_CURRENCY"), "TYPE" => "LIST", "MULTIPLE" => "Y", "VALUES" => $arCurrencyTypes), "DEFAULT_CURRENCY" => array("PARENT" => "BASE", "NAME" => GetMessage("SPT_DEFAULT_CURRENCY"), "TYPE" => "LIST", "VALUES" => $arCurrencyTypes), "COMISSION" => array("PARENT" => "BASE", "NAME" => GetMessage("SPT_COMISSION"), "TYPE" => "STRING", "DEFAULT" => "0", "COLS" => "5"), "CART_PAGE" => array("PARENT" => "BASE", "NAME" => GetMessage("SPT_CART_PAGE"), "TYPE" => "STRING"), "PAY_IMMED" => array("PARENT" => "BASE", "NAME" => GetMessage("SPT_PAY_IMMED"), "TYPE" => "CHECKBOX", "REFRESH" => "Y"), "PERSON_TYPE" => array("PARENT" => "BASE", "NAME" => GetMessage("SPT_PERSON_TYPE"), "TYPE" => "LIST", "VALUES" => $arPersonTypes), "SET_TITLE" => array())); if ($arCurrentValues['PAY_IMMED'] == 'Y') { unset($arComponentParameters['PARAMETERS']['CART_PAGE']); } else { unset($arComponentParameters['PARAMETERS']['PERSON_TYPE']); }
$arResult["DISCOUNT_PRICE"] = CCurrencyRates::ConvertCurrency($arDiscount["DISCOUNT_VALUE"], $arDiscount["CURRENCY"], $arResult["BASE_LANG_CURRENCY"]); $arResult["DISCOUNT_PRICE"] = roundEx($arResult["DISCOUNT_PRICE"], SALE_VALUE_PRECISION); $DISCOUNT_PRICE_tmp = 0; for ($bi = 0; $bi < count($arResult["BASKET_ITEMS"]); $bi++) { $curDiscount = roundEx($arResult["BASKET_ITEMS"][$bi]["PRICE"] * $arResult["DISCOUNT_PRICE"] / $arResult["ORDER_PRICE"], SALE_VALUE_PRECISION); $arResult["DISCOUNTS"][$arResult["BASKET_ITEMS"][$bi]["ID"]] = $curDiscount; $arResult["BASKET_ITEMS"][$bi]["DISCOUNT_PRICE"] = $arResult["BASKET_ITEMS"][$bi]["PRICE"] - $curDiscount; $DISCOUNT_PRICE_tmp += $curDiscount * $arResult["BASKET_ITEMS"][$bi]["QUANTITY"]; } $arResult["DISCOUNT_PRICE"] = $DISCOUNT_PRICE_tmp; } $arResult["DISCOUNT_PRICE_FORMATED"] = SaleFormatCurrency($arResult["DISCOUNT_PRICE"], $arResult["BASE_LANG_CURRENCY"]); } /* Discounts end */ /* Person Type Begin */ $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC"), array("LID" => SITE_ID)); while ($arPersonType = $dbPersonType->GetNext()) { if ($arUserResult["PERSON_TYPE_ID"] == $arPersonType["ID"] || IntVal($arUserResult["PERSON_TYPE_ID"]) <= 0) { $arUserResult["PERSON_TYPE_ID"] = $arPersonType["ID"]; $arPersonType["CHECKED"] = "Y"; } $arResult["PERSON_TYPE"][$arPersonType["ID"]] = $arPersonType; } /* Person Type End */ /* User Profiles Begin */ $bFirst = false; $dbUserProfiles = CSaleOrderUserProps::GetList(array("DATE_UPDATE" => "DESC"), array("PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "USER_ID" => IntVal($USER->GetID()))); while ($arUserProfiles = $dbUserProfiles->GetNext()) { if (!$bFirst && empty($arUserResult["PROFILE_CHANGE"])) { $bFirst = true; $arUserResult["PROFILE_ID"] = IntVal($arUserProfiles["ID"]);
if (!($arOrderOldTmp = $dbOrder->ExtractFields("str_"))) { LocalRedirect("sale_order.php?lang=" . LANG . GetFilterParams("filter_", false)); } $LID = $str_LID; } if (!isset($str_TAX_VALUE) or $str_TAX_VALUE == "") { $str_TAX_VALUE = 0; } if (IntVal($str_PERSON_TYPE_ID) <= 0) { $str_PERSON_TYPE_ID = 0; $arFilter = array(); $arFilter["ACTIVE"] = "Y"; if (strlen($LID) > 0) { $arFilter["LID"] = $LID; } $dbPersonType = CSalePersonType::GetList(array("ID" => "ASC"), $arFilter); if ($arPersonType = $dbPersonType->Fetch()) { $str_PERSON_TYPE_ID = $arPersonType["ID"]; } } $arFuserItems = CSaleUser::GetList(array("USER_ID" => intval($str_USER_ID))); $FUSER_ID = $arFuserItems["ID"]; /* * form select site */ if ((!isset($LID) or $LID == "") and (defined('BX_PUBLIC_MODE') or BX_PUBLIC_MODE == 1)) { $arSitesShop = array(); $arSitesTmp = array(); $rsSites = CSite::GetList($by = "id", $order = "asc", array("ACTIVE" => "Y")); while ($arSite = $rsSites->Fetch()) { $site = COption::GetOptionString("sale", "SHOP_SITE_" . $arSite["ID"], "");
@set_time_limit(0); $DB->StartTransaction(); if (!CSalePersonType::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("SPTAN_ERROR_DELETE"), $ID); } } $DB->Commit(); break; } } } $dbResultList = CSalePersonType::GetList($by, $order, $arFilter); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("PERS_TYPE_NAV"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("PERS_TYPE_ID"), "sort" => "id", "default" => true), array("id" => "NAME", "content" => GetMessage("PERS_TYPE_NAME"), "sort" => "name", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("PERS_ACTIVE"), "sort" => "ACTIVE", "default" => true), array("id" => "LID", "content" => GetMessage('PERS_TYPE_LID'), "sort" => false, "default" => true), array("id" => "SORT", "content" => GetMessage("PERS_TYPE_SORT"), "sort" => "sort", "default" => true), array("id" => "PROPS", "content" => GetMessage("PERS_PROPS"), "sort" => "", "default" => true))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); $arLangs = array(); $dbLangsList = CLang::GetList($b = "sort", $o = "asc"); while ($arLang = $dbLangsList->Fetch()) { $arLangs[$arLang["LID"]] = "[" . htmlspecialcharsbx($arLang["LID"]) . "] " . htmlspecialcharsbx($arLang["NAME"]); } while ($arPersonType = $dbResultList->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arPersonType, "sale_person_type_edit.php?ID=" . $f_ID . "&lang=" . LANG . GetFilterParams("filter_"), GetMessage("SPTAN_UPDATE_ALT")); $row->AddField("ID", "<a href=\"" . "sale_person_type_edit.php?ID=" . $f_ID . "&lang=" . LANG . GetFilterParams("filter_") . "\">" . $f_ID . "</a>"); $row->AddInputField("NAME", array("size" => "30")); $LIDS = "";
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/sale/include.php'; ClearVars(); ClearVars('f_'); ClearVars('l_'); use Bitrix\Sale\Internals\Input, Bitrix\Sale\Internals\OrderPropsTable, Bitrix\Sale\Internals\PersonTypeTable, Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); $propertyId = $ID; $personTypeId = $PERSON_TYPE_ID; unset($ID, $PERSON_TYPE_ID); // load person types $personTypes = array(); //$result = PersonTypeTable::getList(array( // TODO LIDS // 'select' => array('ID', 'NAME', 'LID', 'DOMAIN' => 'SALE.DOMAIN'), // 'order' => array('LID', 'SORT', 'NAME'), //)); $result = CSalePersonType::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array()); while ($row = $result->Fetch()) { $personTypes[$row['ID']] = array('ID' => $row['ID'], 'NAME' => htmlspecialcharsex($row['NAME']), 'LID' => htmlspecialcharsex(implode(", ", $row['LIDS']))); } $errors = array(); $reload = 'reloadForm()'; $variants = array(); // PREPARE PROPERTY, RELATIONS ///////////////////////////////////////////////////////////////////////////////////////// // 1. load property from database if exists $existentProperty = $propertyId ? OrderPropsTable::getById($propertyId)->fetch() : null; // 1. get property from post if ($_SERVER['REQUEST_METHOD'] == 'POST') { $_POST = Input\File::getPostWithFiles($_POST, $_FILES); // // MULTIPLE_DEBUG // if ($_POST['TYPE'] != 'ENUM' && $_POST['TYPE'] != 'FILE') // $_POST['MULTIPLE'] = 'N';
<td> <select name="filter_ps_status"> <option value=""><?echo GetMessage("SALE_F_ALL")?></option> <option value="Y"<?if ($filter_ps_status=="Y") echo " selected"?>><?echo GetMessage("SALE_YES")?></option> <option value="N"<?if ($filter_ps_status=="N") echo " selected"?>><?echo GetMessage("SALE_NO")?></option> <option value="X"<?if ($filter_ps_status=="X") echo " selected"?>><?echo GetMessage("SALE_YES_NO")?></option> </select> </td> </tr> <tr> <td><?echo GetMessage("SALE_F_PERSON_TYPE");?>:</td> <td> <select name="filter_person_type[]" multiple size="3"> <option value=""><?echo GetMessage("SALE_F_ALL")?></option> <? $l = CSalePersonType::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), Array()); while ($personType = $l->Fetch()): ?><option value="<?echo htmlspecialcharsbx($personType["ID"])?>"<?if (is_array($filter_person_type) && in_array($personType["ID"], $filter_person_type)) echo " selected"?>>[<?echo htmlspecialcharsbx($personType["ID"]) ?>] <?echo htmlspecialcharsbx($personType["NAME"])?> <?echo "(".htmlspecialcharsbx(implode(", ", $personType["LIDS"])).")";?></option><? endwhile; ?> </select> </td> </tr> <tr> <td><?echo GetMessage("SALE_F_PAY_SYSTEM");?>:</td> <td> <select name="filter_pay_system[]" multiple size="3"> <option value=""><?echo GetMessage("SALE_F_ALL")?></option> <? $l = CSalePaySystem::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), Array()); while ($paySystem = $l->Fetch()):
static function SelectBoxPersonTypes($personID, $name, $htmlattrs = ""){ if (empty($name)) { return false; } $html = '<select name="'.$name.'" '.$htmlattrs.'>'; $res = CSalePersonType::GetList(Array(), Array()); while ($arRes = $res->Fetch()) { $html .= '<option '.(($arRes['ID']==$personID)?'selected':'').' value="'.$arRes['ID'].'">'.$arRes["NAME"].'</option>'; } $html .= '</select>'; return $html; }
/** * 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; }
public static function getPersonTypesNames($arPersonTypeIds) { $arPersonTypes = array(); $dbPers = CSalePersonType::GetList(array(), array("ID" => $arPersonTypeIds), false, false, array("ID", "NAME")); while ($arPers = $dbPers->Fetch()) { $arPersonTypes[$arPers["ID"]] = htmlspecialcharsbx($arPers["NAME"]); } return $arPersonTypes; }
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"); } } }
?> <input type="hidden" name="id" value="<?php echo $ID; ?> "> <?php $tabControl->EndEpilogContent(); $urlForm = ""; if ($ID > 0) { $urlForm = "&id=" . $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"])];
/** * @param array $oldOrder * @return Shipment * @internal */ public static function convertOrderOldToNew(array $oldOrder) { $siteId = isset($oldOrder["SITE_ID"]) ? $oldOrder["SITE_ID"] : SITE_ID; $newOrder = \Bitrix\Sale\Order::create($siteId, null, $oldOrder["CURRENCY"]); $dbPersonType = \CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y", "LID" => $siteId)); if ($arPersonType = $dbPersonType->GetNext()) { $personTypeId = $arPersonType["ID"]; } else { $personTypeId = 1; } $newOrder->setPersonTypeId($personTypeId); $newOrder->setFieldNoDemand("PRICE", $oldOrder["PRICE"]); $basket = \Bitrix\Sale\Basket::create($siteId); $settableFields = array_flip(\Bitrix\Sale\BasketItemBase::getSettableFields()); if (!empty($oldOrder["ITEMS"]) && is_array($oldOrder["ITEMS"])) { foreach ($oldOrder["ITEMS"] as $oldBasketItem) { $newBasketItem = $basket->createItem($oldBasketItem["MODULE"], $oldBasketItem["PRODUCT_ID"]); $oldBasketItem = array_intersect_key($oldBasketItem, $settableFields); $newBasketItem->setFieldsNoDemand($oldBasketItem); } } $props = $newOrder->getPropertyCollection(); if (!empty($oldOrder['PROPERTIES']) && is_array($oldOrder['PROPERTIES'])) { $r = $props->setValuesFromPost($oldOrder, $_FILES); } $newOrder->setBasket($basket); if ($loc = $props->getDeliveryLocation()) { $loc->setValue($oldOrder["LOCATION_TO"]); } if ($loc = $props->getDeliveryLocationZip()) { $loc->setValue($oldOrder["LOCATION_ZIP"]); } /** @var \Bitrix\Sale\ShipmentCollection $shipmentCollection */ $shipmentCollection = $newOrder->getShipmentCollection(); $shipment = $shipmentCollection->createItem(); $shipment->setField("CURRENCY", $oldOrder["CURRENCY"]); $shipmentItemCollection = $shipment->getShipmentItemCollection(); foreach ($newOrder->getBasket() as $item) { $shipmentItem = $shipmentItemCollection->createItem($item); $shipmentItem->setQuantity($item->getQuantity()); if (strlen($shipmentItem->getField("DIMENSIONS"))) { $shipmentItem->setField("DIMENSIONS", unserialize($shipmentItem->getField("DIMENSIONS"))); } } if (isset($arOrder["DELIVERY_EXTRA_SERVICES"])) { $shipment->setExtraServices($arOrder["DELIVERY_EXTRA_SERVICES"]); } return $shipment; }
$arResultProps = array(); $PERSON_TYPE = isset($_POST["PERSON_TYPE"]) ? (int) $_POST["PERSON_TYPE"] : 0; $PROFILE_ID = isset($_POST["PROFILE_ID"]) ? (int) $_POST["PROFILE_ID"] : ''; $PROFILE_ID_OLD = isset($_POST["PROFILE_ID_OLD"]) ? (int) $_POST["PROFILE_ID_OLD"] : ''; $PAYSYSTEM_ID = isset($_POST["PAYSYSTEM_ID"]) ? htmlspecialcharsbx($_POST["PAYSYSTEM_ID"]) : ''; $DELIVERY_ID = isset($_POST["DELIVERY_ID"]) ? htmlspecialcharsbx($_POST["DELIVERY_ID"]) : ''; $ORDER_DESCRIPTION = htmlspecialcharsbx(trim($_POST["ORDER_DESCRIPTION"])); $ORDER_ID = isset($_REQUEST["ORDER_ID"]) ? (int) $_REQUEST["ORDER_ID"] : ''; $currentUserId = (int) $USER->GetID(); if ((int) $ORDER_ID <= 0) { DiscountCouponsManager::init(); /* * person type */ $arPersonTypeList = array(); $dbPersonType = CSalePersonType::GetList(array("ID" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y", 'LID' => SITE_ID)); while ($arPersonType = $dbPersonType->GetNext()) { $arPersonType["CHECKED"] = 'N'; if ($PERSON_TYPE <= 0) { $PERSON_TYPE = $arPersonType["ID"]; $arPersonType["CHECKED"] = "Y"; } else { if (isset($_POST["PERSON_TYPE"]) && $_POST["PERSON_TYPE"] == $arPersonType["ID"]) { $arPersonType["CHECKED"] = "Y"; } } $arPersonTypeList[$arPersonType["ID"]] = $arPersonType; } $arResultProps["PERSON_TYPE"] = $arPersonTypeList; /* * user profile
$optionsOrderProps[$code]['city'] = 'CITY'; } if (array_search('ZIP', $optionsOrderProps[$code]) == false) { $optionsOrderProps[$code]['index'] = 'ZIP'; } } $api = new RetailCrm\RestApi($api_host, $api_key); $order = $api->orderGet($idOrderCRM, $by = 'id'); $log = new Logger(); $log->write($order, 'order'); $defaultOrderType = 1; $dbOrderTypesList = CSalePersonType::GetList(array(), array("ACTIVE" => "Y")); if ($arOrderTypesList = $dbOrderTypesList->Fetch()) { $defaultOrderType = $arOrderTypesList['ID']; } $GLOBALS['INTARO_CRM_FROM_HISTORY'] = true; if (function_exists('intarocrm_order_pre_persist')) { $order = intarocrm_order_pre_persist($order); } if (!isset($order['externalId'])) { // custom orderType function if (function_exists('intarocrm_set_order_type')) { $orderType = intarocrm_set_order_type($order); if ($orderType) {
<input type="hidden" name="Update" value="Y"> <input type="hidden" name="lang" value="<?php echo LANG; ?> "> <input type="hidden" name="ID" value="<?php echo $ID; ?> "> <?php echo bitrix_sessid_post(); $aTabs = array(array("DIV" => "edit1", "TAB" => GetMessage("SPSN_TAB_PAYSYS"), "ICON" => "sale", "TITLE" => GetMessage("SPSN_TAB_PAYSYS_DESCR")), array("DIV" => "edit2", "TAB" => GetMessage("PPE_PERSON_TYPES"), "ICON" => "sale", "TITLE" => GetMessage("PPE_PERSON_TYPES"))); $aTabs1 = array(); $i = -1; $arPersonTypeList = array(); $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array()); while ($arPersonType = $dbPersonType->Fetch()) { $i++; $aTabs1[] = array("DIV" => "editP" . ($i + 2), "TAB" => htmlspecialcharsEx($arPersonType["NAME"]) . " (" . implode(", ", $arPersonType["LIDS"]) . ")", "ICON" => "sale", "TITLE" => str_replace("#PLTYPE#", htmlspecialcharsEx($arPersonType["NAME"]), GetMessage("SPSN_TAB_PAYSYS_DESCR_1"))); $arPersonTypeList[$i] = $arPersonType; } $tabControl = new CAdminTabControl("tabControl", $aTabs); $tabControl->Begin(); ?> <?php $tabControl->BeginNextTab(); ?> <?php if ($ID > 0) { ?>
"NAME" => $val["NAME"], "CODE" => $val["CODE"], "VALUE" => $val["VALUE"], ); CSaleOrderPropsValue::Add($arFields); } return $orderID; } } $personType = $arGeneralInfo["personType"]["ur"]; if(IntVal($arGeneralInfo["personType"]["fiz"]) > 0) $personType = $arGeneralInfo["personType"]["fiz"]; if(IntVal($personType) <= 0) { $dbPerson = CSalePersonType::GetList(array(), Array("LID" => WIZARD_SITE_ID)); if($arPerson = $dbPerson->Fetch()) { $personType = $arPerson["ID"]; } } if(IntVal($arGeneralInfo["paySystem"]["cash"][$personType]) > 0 ) $paySystem = $arGeneralInfo["paySystem"]["cash"][$personType]; elseif(IntVal($arGeneralInfo["paySystem"]["bill"][$personType]) > 0 ) $paySystem = $arGeneralInfo["paySystem"]["bill"][$personType]; elseif(IntVal($arGeneralInfo["paySystem"]["bill"][$personType]) > 0 ) $paySystem = $arGeneralInfo["paySystem"]["sber"][$personType]; elseif(IntVal($arGeneralInfo["paySystem"]["paypal"][$personType]) > 0 ) $paySystem = $arGeneralInfo["paySystem"]["paypal"][$personType]; else {
public static function SelectBox($sFieldName, $sValue, $sDefaultValue = "", $bFullName = True, $JavaFunc = "", $sAddParams = "") { if (!isset($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]) || !is_array($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]) || count($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"])<1) { unset($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]); $l = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC")); while ($arPersonType = $l->Fetch()) { $GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"][$arPersonType["ID"]] = Array("ID" => $arPersonType["ID"], "NAME" => $arPersonType["NAME"], "LID" => implode(", ", $arPersonType["LIDS"])); } } $s = '<select name="'.$sFieldName.'"'; if (strlen($sAddParams)>0) $s .= ' '.$sAddParams.''; if (strlen($JavaFunc)>0) $s .= ' OnChange="'.$JavaFunc.'"'; $s .= '>'."\n"; $found = false; foreach ($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"] as $res) { $found = (IntVal($res["ID"]) == IntVal($sValue)); $s1 .= '<option value="'.$res["ID"].'"'.($found ? ' selected':'').'>'.(($bFullName)?("[".$res["ID"]."] ".htmlspecialcharsbx($res["NAME"])." (".htmlspecialcharsbx($res["LID"]).")"):(htmlspecialcharsbx($res["NAME"]))).'</option>'."\n"; } if (strlen($sDefaultValue)>0) $s .= "<option value='' ".($found ? "" : "selected").">".htmlspecialcharsbx($sDefaultValue)."</option>"; return $s.$s1.'</select>'; }
function ShowStep() { $wizard =& $this->GetWizard(); $arResult = $wizard->GetVars(true); $dbSite = CSite::GetByID($arResult["siteID"]); $arSite = $dbSite->GetNext(); CModule::IncludeModule("currency"); $dbCurrency = CCurrency::GetList($b = "SORT", $o = "ASC", $arResult["siteID"]); while ($arCur = $dbCurrency->GetNext()) { $arCurrency[$arCur["CURRENCY"]] = $arCur["FULL_NAME"]; } $dbUGroup = CGroup::GetList($b = "c_sort", $o = "ASC", array("ACTIVE" => "Y")); while ($arUGroup = $dbUGroup->GetNext()) { $arGroups[$arUGroup["ID"]] = $arUGroup["NAME"]; } CModule::IncludeModule("sale"); $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC"), array("ACTIVE" => "Y", "LID" => $arResult["siteID"])); while ($arPersonType = $dbPersonType->GetNext()) { $arPersons[$arPersonType["ID"]] = $arPersonType["NAME"]; } $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC"), array("ACTIVE" => "Y", "LID" => $arResult["siteID"])); while ($arPaySystem = $dbPaySystem->GetNext()) { $arPaySystems[$arPaySystem["ID"]] = $arPaySystem["NAME"]; } $dbDelivery = CSaleDeliveryHandler::GetList(array("SORT" => "ASC"), array("SITE_ID" => $arResult["siteID"], "ACTIVE" => "Y")); while ($arDelivery = $dbDelivery->GetNext()) { $arDeliveries[$arDelivery["SID"] . "_new"] = $arDelivery["NAME"] . " " . GetMessage("WW_STEP8_1"); } $dbDelivery = CSaleDelivery::GetList(array("SORT" => "ASC"), array("LID" => $arResult["siteID"], "ACTIVE" => "Y")); while ($arDelivery = $dbDelivery->GetNext()) { $arDeliveries[$arDelivery["ID"]] = $arDelivery["NAME"]; } $this->content = GetMessage("WW_2") . "<br />"; $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_STEP1_2") . "</th><td>[" . $arSite["ID"] . "] " . $arSite["NAME"] . "</td></tr>"; $this->content .= "<tr><th>" . GetMessage("WW_STEP1_3") . "</th><td>" . $arResult["orderEmail"] . "</td></tr>"; $this->content .= "<tr><th>" . GetMessage("WW_STEP1_5") . "</th><td>" . $arResult["currencyID"] . " (" . $arCurrency[$arResult["currencyID"]] . ")" . "</td></tr>"; $this->content .= "<tr><th>" . GetMessage("WW_3") . "</th><td>"; foreach ($arResult["groupID"] as $v) { $this->content .= $arGroups[$v] . "<br />"; } $this->content .= "</td></tr>"; $this->content .= "<tr><th>" . GetMessage("WW_4") . "</th><td>"; foreach ($arResult["personType"] as $v) { $this->content .= $arPersons[$v] . "<br />"; } $this->content .= "</td></tr>"; $this->content .= "<tr><th>" . GetMessage("WW_5") . "</th><td>"; $arPS = array(); foreach ($arResult["paySystem"] as $v) { if (!empty($v)) { foreach ($v as $v1) { if (!in_array($v1, $arPS)) { $arPS[] = $v1; } } } } foreach ($arPS as $v) { $this->content .= $arPaySystems[$v] . "<br />"; } $this->content .= "</td></tr>"; $this->content .= "<tr><th>" . GetMessage("WW_6") . "</th><td>"; if (!empty($arResult["delivery"])) { foreach ($arResult["delivery"] as $v) { $this->content .= $arDeliveries[$v] . "<br />"; } } $this->content .= "</td></tr>"; $this->content .= "</table>"; }
public function getBasketItems() { global $APPLICATION; if (self::$catalogIncluded === null) { self::$catalogIncluded = Loader::includeModule('catalog'); } self::$iblockIncluded = self::$catalogIncluded; CSaleBasket::UpdateBasketPrices(CSaleBasket::GetBasketUserID(), SITE_ID); $bShowReady = false; $bShowDelay = false; $bShowSubscribe = false; $bShowNotAvail = false; $allSum = 0; $allWeight = 0; $allCurrency = CSaleLang::GetLangCurrency(SITE_ID); $allVATSum = 0; $arParents = array(); $arResult["ITEMS"]["AnDelCanBuy"] = array(); $arResult["ITEMS"]["DelDelCanBuy"] = array(); $arResult["ITEMS"]["nAnCanBuy"] = array(); $arResult["ITEMS"]["ProdSubscribe"] = array(); $DISCOUNT_PRICE_ALL = 0; // BASKET PRODUCTS (including measures, ratio, iblock properties data) $arImgFields = array("PREVIEW_PICTURE", "DETAIL_PICTURE"); $arBasketItems = array(); $basketKey = 0; $basketIds = array(); $arSku2Parent = array(); $arSetParentWeight = array(); $arElementId = array(); $dbItems = CSaleBasket::GetList(array("ID" => "ASC"), array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"), false, false, array("ID", "NAME", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "DETAIL_PAGE_URL", "NOTES", "CURRENCY", "VAT_RATE", "CATALOG_XML_ID", "PRODUCT_XML_ID", "SUBSCRIBE", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS", "TYPE", "SET_PARENT_ID")); while ($arItem = $dbItems->GetNext()) { $arItem['PROPS'] = array(); $arBasketItems[$basketKey] = $arItem; $basketIds[$arItem['ID']] =& $arBasketItems[$basketKey]; $basketKey++; if (CSaleBasketHelper::isSetItem($arItem)) { continue; } $arElementId[] = $arItem["PRODUCT_ID"]; } if (!empty($arElementId) && self::$catalogIncluded) { $productList = CCatalogSKU::getProductList($arElementId); if (!empty($productList)) { foreach ($productList as $offerId => $offerInfo) { $offerInfo['PRODUCT_ID'] = $offerInfo['ID']; $arElementId[] = $offerInfo['ID']; $arSku2Parent[$offerId] = $offerInfo['ID']; $arParents[$offerId] = $offerInfo; } unset($offerInfo, $offerId); } unset($productList); // get measures, ratio, sku props data and available quantity $arBasketItems = getMeasures($arBasketItems); $arBasketItems = getRatio($arBasketItems); $arBasketItems = $this->getAvailableQuantity($arBasketItems); $propsIterator = CSaleBasket::GetPropsList(array('BASKET_ID' => 'ASC', 'SORT' => 'ASC', 'ID' => 'ASC'), array('BASKET_ID' => array_keys($basketIds))); while ($property = $propsIterator->GetNext()) { $property['CODE'] = (string) $property['CODE']; if ($property['CODE'] == 'CATALOG.XML_ID' || $property['CODE'] == 'PRODUCT.XML_ID') { continue; } if (!isset($basketIds[$property['BASKET_ID']])) { continue; } $basketIds[$property['BASKET_ID']]['PROPS'][] = $property; } unset($property, $propsIterator, $basketIds); } // get product properties data $arProductData = getProductProps($arElementId, array_merge(array("ID"), $arImgFields, $this->arCustomSelectFields)); foreach ($arBasketItems as &$arItem) { $quantityIsFloat = false; if (number_format(doubleval($arItem['QUANTITY']), 2, '.', '') != intval($arItem['QUANTITY'])) { $quantityIsFloat = true; } $arItem["QUANTITY"] = $quantityIsFloat === false && $this->quantityFloat != "Y" ? intval($arItem['QUANTITY']) : number_format(doubleval($arItem['QUANTITY']), 2, '.', ''); $arItem["PRICE_VAT_VALUE"] = $arItem["PRICE"] / ($arItem["VAT_RATE"] + 1) * $arItem["VAT_RATE"]; $arItem["PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arItem["PRICE"], $arItem["CURRENCY"], true); $arItem["WEIGHT"] = doubleval($arItem["WEIGHT"]); $arItem["WEIGHT_FORMATED"] = roundEx(doubleval($arItem["WEIGHT"] / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit; if (CSaleBasketHelper::isSetItem($arItem)) { $arSetParentWeight[$arItem["SET_PARENT_ID"]] += $arItem["WEIGHT"] * $arItem["QUANTITY"]; } if (isset($arProductData[$arItem['PRODUCT_ID']]) && is_array($arProductData[$arItem['PRODUCT_ID']])) { foreach ($arProductData[$arItem["PRODUCT_ID"]] as $key => $value) { if (strpos($key, "PROPERTY_") !== false || in_array($key, $arImgFields)) { $arItem[$key] = $value; } } } if (array_key_exists($arItem["PRODUCT_ID"], $arSku2Parent)) { $arFieldsToFill = array_merge($this->arCustomSelectFields, $arImgFields); // fields to be filled with parents' values if empty foreach ($arFieldsToFill as $field) { $fieldVal = in_array($field, $arImgFields) ? $field : $field . "_VALUE"; $parentId = $arSku2Parent[$arItem["PRODUCT_ID"]]; if ((!isset($arItem[$fieldVal]) || isset($arItem[$fieldVal]) && strlen($arItem[$fieldVal]) == 0) && (isset($arProductData[$parentId][$fieldVal]) && !empty($arProductData[$parentId][$fieldVal]))) { $arItem[$fieldVal] = $arProductData[$parentId][$fieldVal]; } } } foreach ($arItem as $key => $value) { if (strpos($key, "PROPERTY_", 0) === 0 && strrpos($key, "_VALUE") == strlen($key) - 6) { $code = str_replace(array("PROPERTY_", "_VALUE"), "", $key); $propData = $this->arIblockProps[$code]; $arItem[$key] = CSaleHelper::getIblockPropInfo($value, $propData); } } $arItem["PREVIEW_PICTURE_SRC"] = ""; if (isset($arItem["PREVIEW_PICTURE"]) && intval($arItem["PREVIEW_PICTURE"]) > 0) { $arImage = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]); if ($arImage) { $arFileTmp = CFile::ResizeImageGet($arImage, array("width" => "110", "height" => "110"), BX_RESIZE_IMAGE_PROPORTIONAL, true); $arItem["PREVIEW_PICTURE_SRC"] = $arFileTmp["src"]; } } $arItem["DETAIL_PICTURE_SRC"] = ""; if (isset($arItem["DETAIL_PICTURE"]) && intval($arItem["DETAIL_PICTURE"]) > 0) { $arImage = CFile::GetFileArray($arItem["DETAIL_PICTURE"]); if ($arImage) { $arFileTmp = CFile::ResizeImageGet($arImage, array("width" => "110", "height" => "110"), BX_RESIZE_IMAGE_PROPORTIONAL, true); $arItem["DETAIL_PICTURE_SRC"] = $arFileTmp["src"]; } } } unset($arItem); // get sku props data if (!empty($arBasketItems) && self::$catalogIncluded && isset($this->offersProps) && !empty($this->offersProps)) { $arBasketItems = $this->getSkuPropsData($arBasketItems, $arParents, $this->offersProps); } // count weight for set parent products foreach ($arBasketItems as &$arItem) { if (CSaleBasketHelper::isSetParent($arItem)) { $arItem["WEIGHT"] = $arSetParentWeight[$arItem["ID"]] / $arItem["QUANTITY"]; $arItem["WEIGHT_FORMATED"] = roundEx(doubleval($arItem["WEIGHT"] / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit; } } if (isset($arItem)) { unset($arItem); } // fill item arrays for old templates foreach ($arBasketItems as &$arItem) { if (CSaleBasketHelper::isSetItem($arItem)) { continue; } $arItem['DISCOUNT_PRICE'] = (double) $arItem['DISCOUNT_PRICE']; $arItem['PRICE'] = (double) $arItem['PRICE']; $arItem['DISCOUNT_PRICE_PERCENT'] = 0; $arItem['DISCOUNT_PRICE_PERCENT_FORMATED'] = ''; $arItem['FULL_PRICE'] = $arItem['PRICE']; if ($arItem['DISCOUNT_PRICE'] > 0) { if ($arItem['DISCOUNT_PRICE'] + $arItem['PRICE'] > 0) { $arItem['DISCOUNT_PRICE_PERCENT'] = $arItem['DISCOUNT_PRICE'] * 100 / ($arItem['DISCOUNT_PRICE'] + $arItem['PRICE']); $arItem['DISCOUNT_PRICE_PERCENT_FORMATED'] = roundEx($arItem['DISCOUNT_PRICE_PERCENT'], SALE_VALUE_PRECISION) . '%'; $arItem['FULL_PRICE'] = $arItem["PRICE"] + $arItem["DISCOUNT_PRICE"]; } } $arItem['FULL_PRICE_FORMATED'] = CCurrencyLang::CurrencyFormat($arItem['FULL_PRICE'], $arItem['CURRENCY'], true); if ($arItem["CAN_BUY"] == "Y" && $arItem["DELAY"] == "N") { $allSum += $arItem["PRICE"] * $arItem["QUANTITY"]; $allWeight += $arItem["WEIGHT"] * $arItem["QUANTITY"]; $allVATSum += roundEx($arItem["PRICE_VAT_VALUE"] * $arItem["QUANTITY"], SALE_VALUE_PRECISION); $bShowReady = true; if ($arItem["DISCOUNT_PRICE"] > 0) { $DISCOUNT_PRICE_ALL += $arItem["DISCOUNT_PRICE"] * $arItem["QUANTITY"]; } $arResult["ITEMS"]["AnDelCanBuy"][] = $arItem; } elseif ($arItem["CAN_BUY"] == "Y" && $arItem["DELAY"] == "Y") { $bShowDelay = true; $arResult["ITEMS"]["DelDelCanBuy"][] = $arItem; } elseif ($arItem["CAN_BUY"] == "N" && $arItem["SUBSCRIBE"] == "Y") { $bShowSubscribe = true; $arResult["ITEMS"]["ProdSubscribe"][] = $arItem; } else { $bShowNotAvail = true; $arItem["NOT_AVAILABLE"] = true; $arResult["ITEMS"]["nAnCanBuy"][] = $arItem; } } unset($arItem); $arResult["ShowReady"] = $bShowReady ? "Y" : "N"; $arResult["ShowDelay"] = $bShowDelay ? "Y" : "N"; $arResult["ShowNotAvail"] = $bShowNotAvail ? "Y" : "N"; $arResult["ShowSubscribe"] = $bShowSubscribe ? "Y" : "N"; $arOrder = array('SITE_ID' => SITE_ID, 'USER_ID' => $GLOBALS["USER"]->GetID(), 'ORDER_PRICE' => $allSum, 'ORDER_WEIGHT' => $allWeight, 'BASKET_ITEMS' => $arResult["ITEMS"]["AnDelCanBuy"]); $arOptions = array('COUNT_DISCOUNT_4_ALL_QUANTITY' => $this->countDiscount4AllQuantity); $arErrors = array(); CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors); if (isset($arOrder['ORDER_PRICE'])) { $roundOrderFields = CSaleOrder::getRoundFields(); foreach ($arOrder as $fieldName => $fieldValue) { if (in_array($fieldName, $roundOrderFields)) { $arOrder[$fieldName] = roundEx($arOrder[$fieldName], SALE_VALUE_PRECISION); } } } if (!empty($arOrder['BASKET_ITEMS']) && is_array($arOrder['BASKET_ITEMS'])) { $arOrder['ORDER_PRICE'] = 0; $roundBasketFields = CSaleBasket::getRoundFields(); foreach ($arOrder['BASKET_ITEMS'] as &$basketItem) { foreach ($basketItem as $fieldName => $fieldValue) { if (in_array($fieldName, $roundBasketFields)) { if (isset($basketItem[$fieldName])) { $basketItem[$fieldName] = roundEx($basketItem[$fieldName], SALE_VALUE_PRECISION); } } } $arOrder['ORDER_PRICE'] += $basketItem['PRICE'] * $basketItem['QUANTITY']; } $arOrder['ORDER_PRICE'] = roundEx($arOrder['ORDER_PRICE'], SALE_VALUE_PRECISION); } $allSum = 0; $allWeight = 0; $allVATSum = 0; $DISCOUNT_PRICE_ALL = 0; $priceWithoutDiscount = 0; foreach ($arOrder["BASKET_ITEMS"] as &$arOneItem) { $allWeight += $arOneItem["WEIGHT"] * $arOneItem["QUANTITY"]; $allSum += $arOneItem["PRICE"] * $arOneItem["QUANTITY"]; if (array_key_exists('VAT_VALUE', $arOneItem)) { $arOneItem["PRICE_VAT_VALUE"] = $arOneItem["VAT_VALUE"]; } $allVATSum += roundEx($arOneItem["PRICE_VAT_VALUE"] * $arOneItem["QUANTITY"], SALE_VALUE_PRECISION); $arOneItem["PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arOneItem["PRICE"], $arOneItem["CURRENCY"], true); $arOneItem["FULL_PRICE"] = $arOneItem["PRICE"] + $arOneItem["DISCOUNT_PRICE"]; $arOneItem["FULL_PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arOneItem["FULL_PRICE"], $arOneItem["CURRENCY"], true); $arOneItem["SUM"] = CCurrencyLang::CurrencyFormat($arOneItem["PRICE"] * $arOneItem["QUANTITY"], $arOneItem["CURRENCY"], true); if (0 < doubleval($arOneItem["DISCOUNT_PRICE"] + $arOneItem["PRICE"])) { $arOneItem["DISCOUNT_PRICE_PERCENT"] = $arOneItem["DISCOUNT_PRICE"] * 100 / ($arOneItem["DISCOUNT_PRICE"] + $arOneItem["PRICE"]); } else { $arOneItem["DISCOUNT_PRICE_PERCENT"] = 0; } $arOneItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = roundEx($arOneItem["DISCOUNT_PRICE_PERCENT"], SALE_VALUE_PRECISION) . "%"; $DISCOUNT_PRICE_ALL += $arOneItem["DISCOUNT_PRICE"] * $arOneItem["QUANTITY"]; } unset($arOneItem); $arResult["ITEMS"]["AnDelCanBuy"] = $arOrder["BASKET_ITEMS"]; // fill grid data (for new templates with custom columns) foreach ($arResult["ITEMS"] as $type => $arItems) { foreach ($arItems as $k => $arItem) { $arResult["GRID"]["ROWS"][$arItem["ID"]] = $arItem; } } $arResult["allSum"] = roundEx($allSum, SALE_VALUE_PRECISION); $arResult["allWeight"] = $allWeight; $arResult["allWeight_FORMATED"] = roundEx(doubleval($allWeight / $this->weightKoef), SALE_WEIGHT_PRECISION) . " " . $this->weightUnit; $arResult["allSum_FORMATED"] = CCurrencyLang::CurrencyFormat($allSum, $allCurrency, true); $arResult["DISCOUNT_PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arResult["DISCOUNT_PRICE"], $allCurrency, true); $arResult["PRICE_WITHOUT_DISCOUNT"] = CCurrencyLang::CurrencyFormat($allSum + $DISCOUNT_PRICE_ALL, $allCurrency, true); if ($this->priceVatShowValue == 'Y') { $arResult["allVATSum"] = roundEx($allVATSum, SALE_VALUE_PRECISION); $arResult["allVATSum_FORMATED"] = CCurrencyLang::CurrencyFormat($allVATSum, $allCurrency, true); $arResult["allSum_wVAT_FORMATED"] = CCurrencyLang::CurrencyFormat(doubleval($arResult["allSum"] - $allVATSum), $allCurrency, true); } $arResult['COUPON_LIST'] = array(); $arResult['COUPON'] = ''; if ($this->hideCoupon != "Y") { $arCoupons = DiscountCouponsManager::get(true, array(), true, true); if (!empty($arCoupons)) { foreach ($arCoupons as &$oneCoupon) { if ($arResult['COUPON'] == '') { $arResult['COUPON'] = $oneCoupon['COUPON']; } if ($oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_NOT_FOUND || $oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_FREEZE) { $oneCoupon['JS_STATUS'] = 'BAD'; } elseif ($oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_NOT_APPLYED || $oneCoupon['STATUS'] == DiscountCouponsManager::STATUS_ENTERED) { $oneCoupon['JS_STATUS'] = 'ENTERED'; } else { $oneCoupon['JS_STATUS'] = 'APPLYED'; } $oneCoupon['JS_CHECK_CODE'] = ''; if (isset($oneCoupon['CHECK_CODE_TEXT'])) { $oneCoupon['JS_CHECK_CODE'] = is_array($oneCoupon['CHECK_CODE_TEXT']) ? implode('<br>', $oneCoupon['CHECK_CODE_TEXT']) : $oneCoupon['CHECK_CODE_TEXT']; } $arResult['COUPON_LIST'][] = $oneCoupon; } unset($oneCoupon); $arResult['COUPON_LIST'] = array_values($arCoupons); } unset($arCoupons); } if (empty($arBasketItems)) { $arResult["ERROR_MESSAGE"] = Loc::getMessage("SALE_EMPTY_BASKET"); } $arResult["DISCOUNT_PRICE_ALL"] = $DISCOUNT_PRICE_ALL; $arResult["DISCOUNT_PRICE_ALL_FORMATED"] = CCurrencyLang::CurrencyFormat($DISCOUNT_PRICE_ALL, $allCurrency, true); if ($this->usePrepayment == "Y") { if (doubleval($arResult["allSum"]) > 0) { $personType = array(); $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("LID" => SITE_ID, "ACTIVE" => "Y")); while ($arPersonType = $dbPersonType->Fetch()) { $personType[] = $arPersonType["ID"]; } if (!empty($personType)) { $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PS_ACTIVE" => "Y", "HAVE_PREPAY" => "Y", "PERSON_TYPE_ID" => $personType), false, false, array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "ENCODING", "LOGOTIP")); if ($arPaySysAction = $dbPaySysAction->Fetch()) { CSalePaySystemAction::InitParamarrays(false, false, $arPaySysAction["PARAMS"]); $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"]; $pathToAction = str_replace("\\", "/", $pathToAction); while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/") { $pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1); } if (file_exists($pathToAction)) { if (is_dir($pathToAction) && file_exists($pathToAction . "/pre_payment.php")) { $pathToAction .= "/pre_payment.php"; } try { include_once $pathToAction; } catch (\Bitrix\Main\SystemException $e) { if ($e->getCode() == CSalePaySystemAction::GET_PARAM_VALUE) { $message = Loc::getMessage("SOA_TEMPL_ORDER_PS_ERROR"); } else { $message = $e->getMessage(); } $arResult["ERROR_MESSAGE"] = $message; } $psPreAction = new CSalePaySystemPrePayment(); if ($psPreAction->init()) { $orderData = array("PATH_TO_ORDER" => $this->pathToOrder, "AMOUNT" => $arResult["allSum"], "BASKET_ITEMS" => $arResult["ITEMS"]["AnDelCanBuy"]); if (!$psPreAction->BasketButtonAction($orderData)) { if ($e = $APPLICATION->GetException()) { $arResult["WARNING_MESSAGE"][] = $e->GetString(); } } $arResult["PREPAY_BUTTON"] = $psPreAction->BasketButtonShow(); } } } } } } return $arResult; }
public static function getBuyerTypesList($siteId) { static $result = array(); if (!isset($result[$siteId])) { $result[$siteId] = array(); $dbPersonType = \CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y", "LID" => $siteId)); while ($personType = $dbPersonType->GetNext()) { $result[$siteId][$personType["ID"]] = $personType["NAME"] . " [" . $personType["ID"] . "]"; } } return $result[$siteId]; }