function Update($ID, $arFields, $arOptions = array()) { global $DB; $ID = intval($ID); if ($ID <= 0 || !CSaleDelivery::CheckFields("UPDATE", $arFields)) return false; if (array_key_exists("LOGOTIP", $arFields) && is_array($arFields["LOGOTIP"])) $arFields["LOGOTIP"]["MODULE_ID"] = "sale"; CFile::SaveForDB($arFields, "LOGOTIP", "sale/delivery/logotip"); $strUpdate = $DB->PrepareUpdate("b_sale_delivery", $arFields); $strSql = "UPDATE b_sale_delivery SET ".$strUpdate." WHERE ID = ".$ID.""; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if (is_set($arFields, "LOCATIONS")) { if(CSaleLocation::isLocationProMigrated()) { Helper::resetLocationsForEntity($ID, $arFields['LOCATIONS'], self::CONN_ENTITY_NAME, !!$arOptions['EXPECT_LOCATION_CODES']); } else { $DB->Query("DELETE FROM b_sale_delivery2location WHERE DELIVERY_ID = ".$ID.""); $countarFieldLoc = count($arFields["LOCATIONS"]); for ($i = 0; $i < $countarFieldLoc; $i++) { // change location id to location code $arFields["LOCATIONS"][$i]['LOCATION_CODE'] = $arFields["LOCATIONS"][$i]['LOCATION_ID']; unset($arFields["LOCATIONS"][$i]['LOCATION_ID']); $arInsert = $DB->PrepareInsert("b_sale_delivery2location", $arFields["LOCATIONS"][$i]); $strSql = "INSERT INTO b_sale_delivery2location(DELIVERY_ID, ".$arInsert[0].") ". "VALUES(".$ID.", ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } } } if (is_set($arFields, "PAY_SYSTEM")) { CSaleDelivery::UpdateDeliveryPay($ID, $arFields["PAY_SYSTEM"]); } return $ID; }
/** * <p>Функция изменяет параметры доставки с кодом ID на новые значения из массива arFields</p> * * * * * @param int $ID Код доставки. * * * * @param array $arFields Ассоциативный массив новых параметров доставки, ключами в * котором являются названия параметров доставки, а значениями - * значения параметров. <br> Допустимые ключи: <br><ul> <li> <b>NAME</b> - * название доставки (обязательное, задается на языке сайта, к * которому привязана эта доставка);</li> <li> <b>LID</b> - код сайта, к * которому привязана эта доставка;</li> <li> <b>PERIOD_FROM</b> - минимальный * срок доставки;</li> <li> <b>PERIOD_TO</b> - максимальный срок доставки;</li> <li> * <b>PERIOD_TYPE</b> - единица измерения срока: D - дни, H - часы, M - месяцы;</li> <li> * <b>WEIGHT_FROM</b> - минимальный вес заказа, для которого возможна эта * доставка (единица измерения должна быть едина на сайте);</li> <li> * <b>WEIGHT_TO</b> - максимальный вес заказа, для которого возможна эта * доставка (единица измерения должна быть едина на сайте);</li> <li> * <b>ORDER_PRICE_FROM</b> - минимальная стоимость заказа, для которой возможна * эта доставка;</li> <li> <b>ORDER_PRICE_TO</b> - максимальная стоимость заказа, * для которой возможна эта доставка;</li> <li> <b>ORDER_CURRENCY</b> - валюта * ограничений по стоимости;</li> <li> <b>ACTIVE</b> - флаг (Y/N) активности * доставки;</li> <li> <b>PRICE</b> - стоимость доставки;</li> <li> <b>CURRENCY</b> - валюта * стоимости доставки;</li> <li> <b>SORT</b> - индекс сортировки;</li> <li> * <b>DESCRIPTION</b> - описание доставки;</li> <li> <b>LOCATIONS</b> - массив массивов * вида: <pre class="syntax">array("LOCATION_ID" => "код местоположения или <br> группы * местоположений",<br> "LOCATION_TYPE"=>"L - для местоположения, <br> G - для * группы")</pre> содержащий местоположения и группы местоположений, * для которых работает эта доставка</li> </ul> * * * * @return int <p>Возвращает код изменяемой записи или <i>false</i> в случае ошибки.</p><a * name="examples"></a> * * * <h4>Example</h4> * <pre> * <?<br>$arFields = array(<br> "NAME" => "Доставка курьером",<br> "LID" => "ru",<br> "PERIOD_FROM" => 1,<br> "PERIOD_TO" => 3,<br> "PERIOD_TYPE" => "D",<br> "WEIGHT_FROM" => 0,<br> "WEIGHT_TO" => 2500,<br> "ORDER_PRICE_FROM" => 0,<br> "ORDER_PRICE_TO" => 10000,<br> "ORDER_CURRENCY" => "RUB",<br> "ACTIVE" => "Y",<br> "PRICE" => 58,<br> "CURRENCY" => "RUB",<br> "SORT" => 100,<br> "DESCRIPTION" => "Заказ будет доставлен Вам в течение 3 - 10 рабочих дней после передачи его в курьерскую службу.",<br> "LOCATIONS" => array(<br> array("LOCATION_ID"=>1, "LOCATION_TYPE"=>"L"),<br> array("LOCATION_ID"=>3, "LOCATION_TYPE"=>"G")<br> )<br>);<br><br>if (!CSaleDelivery::Update($ID, $arFields))<br> echo "Ошибка изменения доставки";<br>?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaledelivery/csaledelivery__update.dcec3766.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; $ID = intval($ID); if ($ID <= 0 || !CSaleDelivery::CheckFields("UPDATE", $arFields)) return false; if (array_key_exists("LOGOTIP", $arFields) && is_array($arFields["LOGOTIP"])) $arFields["LOGOTIP"]["MODULE_ID"] = "sale"; CFile::SaveForDB($arFields, "LOGOTIP", "sale/delivery/logotip"); $strUpdate = $DB->PrepareUpdate("b_sale_delivery", $arFields); $strSql = "UPDATE b_sale_delivery SET ".$strUpdate." WHERE ID = ".$ID.""; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if (is_set($arFields, "LOCATIONS")) { $DB->Query("DELETE FROM b_sale_delivery2location WHERE DELIVERY_ID = ".$ID.""); $countarFieldLoc = count($arFields["LOCATIONS"]); for ($i = 0; $i < $countarFieldLoc; $i++) { $arInsert = $DB->PrepareInsert("b_sale_delivery2location", $arFields["LOCATIONS"][$i]); $strSql = "INSERT INTO b_sale_delivery2location(DELIVERY_ID, ".$arInsert[0].") ". "VALUES(".$ID.", ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } } if (is_set($arFields, "PAY_SYSTEM")) { CSaleDelivery::UpdateDeliveryPay($ID, $arFields["PAY_SYSTEM"]); } return $ID; }
/** * <p>Функция добавляет новый способ (службу) доставки с параметрами из массива arFields.</p> * * * * * @param array $arFields Ассоциативный массив параметров доставки, ключами в котором * являются названия параметров доставки, а значениями - значения * параметров. <br><br> Допустимые ключи: <br><ul> <li> <b>NAME</b> - название * доставки (обязательное, задается на языке сайта, к которому * привязана эта доставка);</li> <li> <b>LID</b> - код сайта, к которому * привязана эта доставка;</li> <li> <b>PERIOD_FROM</b> - минимальный срок * доставки;</li> <li> <b>PERIOD_TO</b> - максимальный срок доставки;</li> <li> * <b>PERIOD_TYPE</b> - единица измерения срока: D - дни, H - часы, M - месяцы;</li> <li> * <b>WEIGHT_FROM</b> - минимальный вес заказа, для которого возможна эта * доставка (единица измерения должна быть едина на сайте);</li> <li> * <b>WEIGHT_TO</b> - максимальный вес заказа, для которого возможна эта * доставка (единица измерения должна быть едина на сайте);</li> <li> * <b>ORDER_PRICE_FROM</b> - минимальная стоимость заказа, для которой возможна * эта доставка;</li> <li> <b>ORDER_PRICE_TO</b> - максимальная стоимость заказа, * для которой возможна эта доставка;</li> <li> <b>ORDER_CURRENCY</b> - валюта * ограничений по стоимости;</li> <li> <b>ACTIVE</b> - флаг (Y/N) активности * доставки;</li> <li> <b>PRICE</b> - стоимость доставки;</li> <li> <b>CURRENCY</b> - валюта * стоимости доставки;</li> <li> <b>SORT</b> - индекс сортировки;</li> <li> * <b>DESCRIPTION</b> - описание доставки;</li> <li> <b>LOCATIONS</b> - массив массивов * вида: <pre class="syntax">array("LOCATION_ID" => "код местоположения или <br> группы * местоположений",<br> "LOCATION_TYPE"=>"L - для местоположения, <br> G - для * группы")</pre> содержащий местоположения и группы местоположений, * для которых работает эта доставка</li> </ul> * * * * @return int <p>Возвращает код добавленной записи или <i>false</i> в случае * ошибки.</p><a name="examples"></a> * * * <h4>Example</h4> * <pre> * <?<br>$arFields = array(<br> "NAME" => "Доставка курьером",<br> "LID" => "ru",<br> "PERIOD_FROM" => 1,<br> "PERIOD_TO" => 3,<br> "PERIOD_TYPE" => "D",<br> "WEIGHT_FROM" => 0,<br> "WEIGHT_TO" => 2500,<br> "ORDER_PRICE_FROM" => 0,<br> "ORDER_PRICE_TO" => 10000,<br> "ORDER_CURRENCY" => "RUB",<br> "ACTIVE" => "Y",<br> "PRICE" => 58,<br> "CURRENCY" => "RUB",<br> "SORT" => 100,<br> "DESCRIPTION" => "Заказ будет доставлен Вам в течение 3 - 10 рабочих дней после передачи его в курьерскую службу.",<br> "LOCATIONS" => array(<br> array("LOCATION_ID"=>1, "LOCATION_TYPE"=>"L"),<br> array("LOCATION_ID"=>3, "LOCATION_TYPE"=>"G")<br> )<br>);<br><br>$ID = CSaleDelivery::Add($arFields);<br>if ($ID<=0)<br> echo "Ошибка добавления доставки";<br>?><br> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaledelivery/csaledelivery__add.564001a4.php * @author Bitrix */ public static function Add($arFields) { global $DB; if (!CSaleDelivery::CheckFields("ADD", $arFields)) return false; if (array_key_exists("LOGOTIP", $arFields) && is_array($arFields["LOGOTIP"])) $arFields["LOGOTIP"]["MODULE_ID"] = "sale"; CFile::SaveForDB($arFields, "LOGOTIP", "sale/delivery/logotip"); $arInsert = $DB->PrepareInsert("b_sale_delivery", $arFields); $strSql = "INSERT INTO b_sale_delivery(".$arInsert[0].") ". "VALUES(".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); $ID = IntVal($DB->LastID()); foreach($arFields["LOCATIONS"] as $location) { $arInsert = $DB->PrepareInsert("b_sale_delivery2location", $location); $strSql = "INSERT INTO b_sale_delivery2location(DELIVERY_ID, ".$arInsert[0].") ". "VALUES(".$ID.", ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } if (is_set($arFields, "PAY_SYSTEM")) { CSaleDelivery::UpdateDeliveryPay($ID, $arFields["PAY_SYSTEM"]); } return $ID; }
function Add($arFields, $arOptions = array()) { global $DB; if (!CSaleDelivery::CheckFields("ADD", $arFields)) { return false; } if (array_key_exists("LOGOTIP", $arFields) && is_array($arFields["LOGOTIP"])) { $arFields["LOGOTIP"]["MODULE_ID"] = "sale"; } CFile::SaveForDB($arFields, "LOGOTIP", "sale/delivery/logotip"); $arInsert = $DB->PrepareInsert("b_sale_delivery", $arFields); $strSql = "INSERT INTO b_sale_delivery(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); if (CSaleLocation::isLocationProMigrated()) { Helper::resetLocationsForEntity($ID, $arFields['LOCATIONS'], self::CONN_ENTITY_NAME, !!$arOptions['EXPECT_LOCATION_CODES']); } else { foreach ($arFields["LOCATIONS"] as $location) { // change location id to location code $location['LOCATION_CODE'] = $location['LOCATION_ID']; unset($location['LOCATION_ID']); $arInsert = $DB->PrepareInsert("b_sale_delivery2location", $location); $strSql = "INSERT INTO b_sale_delivery2location(DELIVERY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } if (is_set($arFields, "PAY_SYSTEM")) { CSaleDelivery::UpdateDeliveryPay($ID, $arFields["PAY_SYSTEM"]); } return $ID; }