%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sale/general/ |
Current File : /home/bitrix/www/bitrix/modules/sale/general/order_user_props_value.php |
<? class CAllSaleOrderUserPropsValue { function GetByID($ID) { global $DB; $ID = IntVal($ID); if(CSaleLocation::isLocationProMigrated()) { $strSql = "SELECT V.ID, V.USER_PROPS_ID, V.ORDER_PROPS_ID, V.NAME, ".self::getPropertyValueFieldSelectSql('V').", P.TYPE ". "FROM b_sale_user_props_value V ". "INNER JOIN b_sale_order_props P ON (V.ORDER_PROPS_ID = P.ID) ". self::getLocationTableJoinSql('V'). "WHERE V.ID = ".$ID.""; } else { $strSql = "SELECT * ". "FROM b_sale_user_props_value ". "WHERE ID = ".$ID.""; } $db_res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($res = $db_res->Fetch()) { return $res; } return False; } function Delete($ID) { global $DB; $ID = IntVal($ID); return $DB->Query("DELETE FROM b_sale_user_props_value WHERE ID = ".$ID."", true); } function DeleteAll($ID) { global $DB; $ID = IntVal($ID); return $DB->Query("DELETE FROM b_sale_user_props_value WHERE USER_PROPS_ID = ".$ID."", true); } function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); // need to check here if we got CODE or ID came if(isset($arFields['VALUE']) && ((string) $arFields['VALUE'] != '') && CSaleLocation::isLocationProMigrated()) { $propValue = self::GetByID($ID); if($propValue['TYPE'] == 'LOCATION') { $arFields['VALUE'] = CSaleLocation::tryTranslateIDToCode($arFields['VALUE']); } } $strUpdate = $DB->PrepareUpdate("b_sale_user_props_value", $arFields); $strSql = "UPDATE b_sale_user_props_value SET ". " ".$strUpdate." ". "WHERE ID = ".$ID." "; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); return $ID; } protected static function getPropertyValueFieldSelectSql($tableAlias = 'PV', $propTableAlias = 'P') { $tableAlias = \Bitrix\Main\HttpApplication::getConnection()->getSqlHelper()->forSql($tableAlias); $propTableAlias = \Bitrix\Main\HttpApplication::getConnection()->getSqlHelper()->forSql($propTableAlias); if(CSaleLocation::isLocationProMigrated()) return " CASE WHEN ".$propTableAlias.".TYPE = 'LOCATION' THEN CAST(L.ID as ".\Bitrix\Sale\Location\DB\Helper::getSqlForDataType('char', 255).") ELSE ".$tableAlias.".VALUE END as VALUE, ".$tableAlias.".VALUE as VALUE_ORIG"; else return $tableAlias.".VALUE"; } protected static function getLocationTableJoinSql($tableAlias = 'PV', $propTableAlias = 'P') { $tableAlias = \Bitrix\Main\HttpApplication::getConnection()->getSqlHelper()->forSql($tableAlias); $propTableAlias = \Bitrix\Main\HttpApplication::getConnection()->getSqlHelper()->forSql($propTableAlias); if(CSaleLocation::isLocationProMigrated()) return "LEFT JOIN b_sale_location L ON (".$propTableAlias.".TYPE = 'LOCATION' AND ".$tableAlias.".VALUE IS NOT NULL AND (".$tableAlias.".VALUE = L.CODE))"; else return " "; } protected static function translateLocationIDToCode($id, $orderPropId) { if(!CSaleLocation::isLocationProMigrated()) return $id; $prop = CSaleOrderProps::GetByID($orderPropId); if(isset($prop['TYPE']) && $prop['TYPE'] == 'LOCATION') { if((string) $id === (string) intval($id)) // real ID, need to translate { return CSaleLocation::tryTranslateIDToCode($id); } } return $id; } protected static function addPropertyValueField($tableAlias = 'V', &$arFields, &$arSelectFields) { $tableAlias = \Bitrix\Main\HttpApplication::getConnection()->getSqlHelper()->forSql($tableAlias); // locations kept in CODEs, but must be shown as IDs if(CSaleLocation::isLocationProMigrated()) { $arSelectFields = array_merge(array('PROP_TYPE'), $arSelectFields); // P.TYPE should be there and go above our join $arFields['VALUE'] = array("FIELD" => " CASE WHEN P.TYPE = 'LOCATION' THEN CAST(L.ID as ".\Bitrix\Sale\Location\DB\Helper::getSqlForDataType('char', 255).") ELSE ".$tableAlias.".VALUE END ", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location L ON (P.TYPE = 'LOCATION' AND ".$tableAlias.".VALUE IS NOT NULL AND ".$tableAlias.".VALUE = L.CODE)"); $arFields['VALUE_ORIG'] = array("FIELD" => $tableAlias.".VALUE", "TYPE" => "string"); } else { $arFields['VALUE'] = array("FIELD" => $tableAlias.".VALUE", "TYPE" => "string"); } } // protected static function getList15($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) // { // $query = new \Bitrix\Sale\Compatible\OrderQueryLocation(Bitrix\Sale\Internals\UserPropsValueTable::getEntity()); // $query->addLocationRuntimeField('DEFAULT_VALUE');???? // $query->addAliases(array( // // for GetList // 'PROP_ID' => 'PROPERTY.ID', // 'PROP_PERSON_TYPE_ID' => 'PROPERTY.PERSON_TYPE_ID', // 'PROP_NAME' => 'PROPERTY.NAME', // 'PROP_TYPE' => 'PROPERTY.TYPE', // 'PROP_REQUIED' => 'PROPERTY.REQUIRED', // 'PROP_DEFAULT_VALUE' => 'PROPERTY.DEFAULT_VALUE', // 'PROP_SORT' => 'PROPERTY.SORT', // 'PROP_USER_PROPS' => 'PROPERTY.USER_PROPS', // 'PROP_IS_LOCATION' => 'PROPERTY.IS_LOCATION', // 'PROP_PROPS_GROUP_ID' => 'PROPERTY.PROPS_GROUP_ID', // 'PROP_DESCRIPTION' => 'PROPERTY.DESCRIPTION', // 'PROP_IS_EMAIL' => 'PROPERTY.IS_EMAIL', // 'PROP_IS_PROFILE_NAME' => 'PROPERTY.IS_PROFILE_NAME', // 'PROP_IS_PAYER' => 'PROPERTY.IS_PAYER', // 'PROP_IS_LOCATION4TAX' => 'PROPERTY.IS_LOCATION4TAX', // 'PROP_IS_ZIP' => 'PROPERTY.IS_ZIP', // 'PROP_CODE' => 'PROPERTY.CODE', // 'PROP_ACTIVE' => 'PROPERTY.ACTIVE', // 'PROP_UTIL' => 'PROPERTY.UTIL', // // // // "PROP_SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), // "PROP_SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), // // "VARIANT_ID" => array("FIELD" => "PV.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), // "VARIANT_ORDER_PROPS_ID" => array("FIELD" => "PV.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), // "VARIANT_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), // "VARIANT_VALUE" => array("FIELD" => "PV.VALUE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), // "VARIANT_SORT" => array("FIELD" => "PV.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), // "VARIANT_DESCRIPTION" => array("FIELD" => "PV.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), // // "USER_VALUE_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string"), // "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), // "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), // "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), // // )); // } } ?>