/** @deprecated */
 public static function Set($code, $arData, $siteId = false)
 {
     global $APPLICATION;
     $serviceParams = self::getServiceParams($code, $siteId);
     $id = isset($serviceParams["ID"]) ? $serviceParams["ID"] : false;
     $update = intval($id) > 0;
     $fields = array_intersect_key($arData, Bitrix\Sale\Delivery\Services\Table::getMap());
     if (!$update) {
         $fields["CODE"] = $code;
         if (!isset($arData["CLASS_NAME"])) {
             $fields["CLASS_NAME"] = '\\Bitrix\\Sale\\Delivery\\Services\\Automatic';
         } else {
             $fields["CLASS_NAME"] = $arData["CLASS_NAME"];
         }
     }
     if (isset($arData["PARENT_ID"])) {
         $fields["PARENT_ID"] = $arData["PARENT_ID"];
     } elseif (!$update) {
         $fields["PARENT_ID"] = 0;
     }
     if (!defined('SALE_DH_INITIALIZED')) {
         CSaleDeliveryHandler::Initialize();
     }
     $handlers = self::__getRegisteredHandlers();
     if (isset($serviceParams["CONFIG"])) {
         $fields["CONFIG"] = $serviceParams["CONFIG"];
     } else {
         $fields["CONFIG"] = array();
     }
     if (isset($arData["CONFIG"])) {
         if (isset($handlers[$code]["DBSETSETTINGS"]) && is_callable($handlers[$code]["DBSETSETTINGS"])) {
             if (!($strOldSettings = call_user_func($handlers[$code]["DBSETSETTINGS"], $arData["CONFIG"]))) {
                 $APPLICATION->ThrowException("Can't save delivery services's old settings");
                 return false;
             }
         } else {
             $strOldSettings = $arData["CONFIG"];
         }
         $strOldSettings = serialize($strOldSettings);
         $fields["CONFIG"]["MAIN"]["OLD_SETTINGS"] = $strOldSettings;
     }
     if (!empty($arData["BASE_CURRENCY"])) {
         $fields["CURRENCY"] = $arData["BASE_CURRENCY"];
     } elseif (!empty($serviceParams["CURRENCY"])) {
         $fields["CURRENCY"] = $serviceParams["CURRENCY"];
     } elseif (!empty($handlers[$code]["BASE_CURRENCY"])) {
         $fields["CURRENCY"] = $handlers[$code]["BASE_CURRENCY"];
     } else {
         $fields["CURRENCY"] = COption::GetOptionString('sale', 'default_currency', 'RUB');
     }
     if (isset($arData["SID"])) {
         $fields["CONFIG"]["MAIN"]["SID"] = $arData["SID"];
     } else {
         $fields["CONFIG"]["MAIN"]["SID"] = "";
     }
     if (isset($arData["TAX_RATE"]) && floatval($arData["TAX_RATE"]) > 0) {
         $fields["CONFIG"]["MAIN"]["MARGIN_VALUE"] = $arData["TAX_RATE"];
         $fields["CONFIG"]["MAIN"]["MARGIN_TYPE"] = "%";
     } elseif (!$update) {
         $fields["CONFIG"]["MAIN"]["MARGIN"] = 0;
     }
     if (isset($arData["PROFILE_ID"])) {
         $fields["CONFIG"]["MAIN"]["PROFILE_ID"] = $arData["PROFILE_ID"];
     } else {
         $fields["CONFIG"]["MAIN"]["PROFILE_ID"] = "";
     }
     if (isset($arData["LOGOTIP"]) && is_array($arData["LOGOTIP"])) {
         $fields["LOGOTIP"] = $arData["LOGOTIP"];
         $fields["LOGOTIP"]["MODULE_ID"] = "sale";
         CFile::SaveForDB($fields, "LOGOTIP", "sale/delivery/logotip");
     }
     if ($update) {
         $res = \Bitrix\Sale\Delivery\Services\Table::update($id, $fields);
     } else {
         $res = \Bitrix\Sale\Delivery\Services\Table::add($fields);
     }
     if (!$res->isSuccess()) {
         throw new \Bitrix\Main\SystemException(implode("\n", $res->getErrorMessages()));
     }
     if (!$update) {
         $id = $res->getId();
     }
     if (is_array($arData["PROFILES"])) {
         foreach ($arData["PROFILES"] as $profileCode => $profileData) {
             self::Set($code . ":" . $profileCode, array("NAME" => strlen($profileData["TITLE"]) > 0 ? $profileData["TITLE"] : $handlers[$code]['PROFILES'][$profileCode]['TITLE'], "DESCRIPTION" => isset($profileData["DESCRIPTION"]) ? $profileData["DESCRIPTION"] : '', "ACTIVE" => isset($profileData["ACTIVE"]) ? $profileData["ACTIVE"] : "N", "TAX_RATE" => isset($profileData["TAX_RATE"]) ? $profileData["TAX_RATE"] : 0, "PARENT_ID" => isset($profileData["PARENT_ID"]) ? $profileData["PARENT_ID"] : $id, "SORT" => isset($arData["SORT"]) ? $arData["SORT"] : 100, "RESTRICTIONS_WEIGHT" => isset($profileData["RESTRICTIONS_WEIGHT"]) ? $profileData["RESTRICTIONS_WEIGHT"] : false, "RESTRICTIONS_SUM" => isset($profileData["RESTRICTIONS_SUM"]) ? $profileData["RESTRICTIONS_SUM"] : false, "RESTRICTIONS_DIMENSIONS" => isset($profileData["RESTRICTIONS_DIMENSIONS"]) ? $profileData["RESTRICTIONS_DIMENSIONS"] : false, "RESTRICTIONS_MAX_SIZE" => isset($profileData["RESTRICTIONS_MAX_SIZE"]) ? $profileData["RESTRICTIONS_MAX_SIZE"] : 0, "RESTRICTIONS_DIMENSIONS_SUM" => isset($profileData["RESTRICTIONS_DIMENSIONS_SUM"]) ? $profileData["RESTRICTIONS_DIMENSIONS_SUM"] : 0, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Services\\AutomaticProfile', "PROFILE_ID" => $profileCode), strlen($siteId) > 0 ? $siteId : "");
         }
     }
     if (strlen($siteId) > 0) {
         if (!self::saveRestrictionBySiteId($id, $siteId, $update)) {
             $APPLICATION->ThrowException("Can't save delivery restriction by site", "SITE_ID");
             return false;
         }
     } elseif ($update) {
         \Bitrix\Sale\Delivery\Restrictions\Table::deleteByDeliveryIdClassName($id, '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite');
     }
     if (is_array($arData["RESTRICTIONS_WEIGHT"]) && (floatval($arData["RESTRICTIONS_WEIGHT"][0]) > 0 || floatval($arData["RESTRICTIONS_WEIGHT"][1]) > 0)) {
         if (!self::saveRestrictionByWeight($id, $arData["RESTRICTIONS_WEIGHT"], $update)) {
             $APPLICATION->ThrowException("Can't save delivery restriction by weight", "RESTRICTIONS_WEIGHT");
             return false;
         }
     } elseif ($update) {
         \Bitrix\Sale\Delivery\Restrictions\Table::deleteByDeliveryIdClassName($id, '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByWeight');
     }
     if (is_array($arData["RESTRICTIONS_SUM"]) && (floatval($arData["RESTRICTIONS_SUM"][0]) > 0 || floatval($arData["RESTRICTIONS_SUM"][1]) > 0)) {
         if (!self::saveRestrictionByPrice($id, $arData["RESTRICTIONS_SUM"], $fields["CURRENCY"], $update)) {
             $APPLICATION->ThrowException("Can't save delivery restriction by sum", "RESTRICTIONS_SUM");
             return false;
         }
     } elseif ($update) {
         \Bitrix\Sale\Delivery\Restrictions\Table::deleteByDeliveryIdClassName($id, '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPrice');
     }
     if (is_array($arData["RESTRICTIONS_DIMENSIONS"]) && (floatval($arData["RESTRICTIONS_DIMENSIONS"][0]) > 0 || floatval($arData["RESTRICTIONS_DIMENSIONS"][1]) > 0 || floatval($arData["RESTRICTIONS_DIMENSIONS"][3]) > 0)) {
         if (!self::saveRestrictionByDimensions($id, array("LENGTH" => count($arData["RESTRICTIONS_DIMENSIONS"][0]) > 0 ? $arData["RESTRICTIONS_DIMENSIONS"][0] : 0, "WIDTH" => isset($arData["RESTRICTIONS_DIMENSIONS"][1]) ? $arData["RESTRICTIONS_DIMENSIONS"][1] : 0, "HEIGHT" => isset($arData["RESTRICTIONS_DIMENSIONS"][2]) ? $arData["RESTRICTIONS_DIMENSIONS"][2] : 0), $update)) {
             $APPLICATION->ThrowException("Can't save delivery restriction by dimensions");
             return false;
         }
     } elseif ($update) {
         \Bitrix\Sale\Delivery\Restrictions\Table::deleteByDeliveryIdClassName($id, '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByDimensions');
     }
     if (floatval($arData["RESTRICTIONS_MAX_SIZE"]) > 0) {
         if (!self::saveRestrictionByMaxSize($id, $arData["RESTRICTIONS_MAX_SIZE"], $update)) {
             $APPLICATION->ThrowException("Can't save delivery restriction by maxx size", "RESTRICTIONS_MAX_SIZE");
             return false;
         }
     } elseif ($update) {
         \Bitrix\Sale\Delivery\Restrictions\Table::deleteByDeliveryIdClassName($id, '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByMaxSize');
     }
     return $id;
 }
Exemple #2
0
 /**
  * @deprecated
  */
 public static function Update($oldId, $arFields, $arOptions = array())
 {
     if (strlen($oldId) <= 0) {
         return false;
     }
     $dbRes = Bitrix\Sale\Delivery\Services\Table::getList(array('filter' => array("CODE" => $oldId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Services\\Configurable')));
     $oldData = $dbRes->fetch();
     if (!$oldData) {
         return false;
     }
     $newId = $oldData["ID"];
     $fields = array_intersect_key($arFields, Bitrix\Sale\Delivery\Services\Table::getMap());
     if (!empty($fields)) {
         if (array_key_exists("LOGOTIP", $fields) && is_array($fields["LOGOTIP"])) {
             $fields["LOGOTIP"]["MODULE_ID"] = "sale";
             CFile::SaveForDB($fields, "LOGOTIP", "sale/delivery/logotip");
         }
         $fields["CONFIG"] = array("MAIN" => array("PRICE" => isset($arFields["PRICE"]) ? $arFields["PRICE"] : $oldData["CONFIG"]["MAIN"]["PRICE"], "PERIOD" => array("FROM" => isset($arFields["PERIOD_FROM"]) ? $arFields["PERIOD_FROM"] : $oldData["CONFIG"]["MAIN"]["PERIOD"]["FROM"], "TO" => isset($arFields["PERIOD_TO"]) ? $arFields["PERIOD_TO"] : $oldData["CONFIG"]["MAIN"]["PERIOD"]["TO"], "TYPE" => isset($arFields["PERIOD_TYPE"]) ? $arFields["PERIOD_TYPE"] : $oldData["CONFIG"]["MAIN"]["PERIOD"]["TYPE"])));
         $res = \Bitrix\Sale\Delivery\Services\Table::update($newId, $fields);
         if (!$res->isSuccess()) {
             return false;
         }
     }
     if (is_set($arFields, "LOCATIONS")) {
         Helper::resetLocationsForEntity($newId, $arFields['LOCATIONS'], self::CONN_ENTITY_NAME, !!$arOptions['EXPECT_LOCATION_CODES']);
     }
     if (is_set($arFields, "PAY_SYSTEM")) {
         CSaleDelivery::UpdateDeliveryPay($newId, $arFields["PAY_SYSTEM"]);
     }
     if (isset($arFields["LID"])) {
         $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite', "PARAMS" => array("SITE_ID" => $arFields["LID"]));
         $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite')));
         if ($restrict = $rstrRes->fetch()) {
             $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields);
         } else {
             $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields);
         }
     }
     if (isset($arFields["LID"]) && strlen($arFields["LID"]) > 0) {
         $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite', "PARAMS" => array("SITE_ID" => $arFields["LID"]));
         $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite')));
         if ($restrict = $rstrRes->fetch()) {
             $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields);
         } else {
             $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields);
         }
     }
     if (isset($arFields["WEIGHT_FROM"]) || isset($arFields["WEIGHT_TO"])) {
         $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByWeight', "PARAMS" => array("MIN_WEIGHT" => isset($arFields["WEIGHT_FROM"]) ? $arFields["WEIGHT_FROM"] : 0, "MAX_WEIGHT" => isset($arFields["WEIGHT_TO"]) ? $arFields["WEIGHT_TO"] : 0));
         $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByWeight')));
         if ($restrict = $rstrRes->fetch()) {
             if (floatval($arFields["WEIGHT_FROM"]) <= 0 && floatval($arFields["WEIGHT_TO"]) <= 0) {
                 $rres = \Bitrix\Sale\Delivery\Restrictions\Table::delete($restrict["ID"]);
             } else {
                 if (!isset($arFields["WEIGHT_FROM"])) {
                     $rfields["PARAMS"]["MIN_WEIGHT"] = $restrict["PARAMS"]["MIN_WEIGHT"];
                 }
                 if (!isset($arFields["WEIGHT_TO"])) {
                     $rfields["PARAMS"]["MAX_WEIGHT"] = $restrict["PARAMS"]["MAX_WEIGHT"];
                 }
                 $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields);
             }
         } else {
             $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields);
         }
     }
     if (isset($arFields["ORDER_PRICE_FROM"]) || isset($arFields["ORDER_PRICE_TO"]) || isset($arFields["ORDER_CURRENCY"])) {
         $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPrice', "PARAMS" => array("MIN_PRICE" => isset($arFields["ORDER_PRICE_FROM"]) ? $arFields["ORDER_PRICE_FROM"] : 0, "MAX_PRICE" => isset($arFields["ORDER_PRICE_TO"]) ? $arFields["ORDER_PRICE_TO"] : 0, "CURRENCY" => isset($arFields["ORDER_CURRENCY"]) ? $arFields["ORDER_CURRENCY"] : ""));
         $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPrice')));
         if ($restrict = $rstrRes->fetch()) {
             if (floatval($arFields["ORDER_PRICE_FROM"]) <= 0 && floatval($arFields["ORDER_PRICE_TO"]) <= 0 && strlen($arFields["ORDER_CURRENCY"]) <= 0) {
                 $rres = \Bitrix\Sale\Delivery\Restrictions\Table::delete($restrict["ID"]);
             } else {
                 if (!isset($arFields["ORDER_PRICE_FROM"])) {
                     $rfields["PARAMS"]["MIN_PRICE"] = $restrict["PARAMS"]["MIN_PRICE"];
                 }
                 if (!isset($arFields["ORDER_PRICE_TO"])) {
                     $rfields["PARAMS"]["MAX_PRICE"] = $restrict["PARAMS"]["MAX_PRICE"];
                 }
                 if (!isset($arFields["ORDER_CURRENCY"])) {
                     $rfields["PARAMS"]["CURRENCY"] = $restrict["PARAMS"]["CURRENCY"];
                 }
                 $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields);
             }
         } else {
             $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields);
         }
     }
     if (isset($arFields["STORE"])) {
         $stores = unserialize($arFields["STORE"]);
         if ($stores) {
             \Bitrix\Sale\Delivery\ExtraServices\Manager::saveStores($newId, $stores);
         }
     }
     return $oldId;
 }
Exemple #3
0
 public static function onAfterAdd($serviceId, array $fields = array())
 {
     if ($serviceId <= 0) {
         return false;
     }
     $res = \Bitrix\Sale\Delivery\Services\Table::update($serviceId, array('CODE' => $serviceId));
     return $res->isSuccess();
 }
 try {
     $service = Services\Manager::createServiceObject($fields);
     $fields = $service->prepareFieldsForSaving($fields);
 } catch (\Bitrix\Main\SystemException $e) {
     $strError = $e->getMessage();
 }
 if ($strError == '') {
     if (isset($fields["PARENT_ID"]) && $fields["PARENT_ID"] == "new" && strlen($_POST["GROUP_NAME"]) > 0) {
         $fields["PARENT_ID"] = Services\Manager::getGroupId($_POST["GROUP_NAME"]);
         if ($fields["PARENT_ID"] <= 0) {
             $strError .= Loc::getMessage("SALE_DSE_ERROR_GROUP_SAVE") . "<br>";
         }
     }
     if ($ID > 0) {
         unset($fields["ID"]);
         $res = \Bitrix\Sale\Delivery\Services\Table::update($ID, $fields);
         if ($res->isSuccess()) {
             // update some fields in children if need
             if (!empty($changedFields)) {
                 $fieldsList = array();
                 if (in_array('ACTIVE', $changedFields)) {
                     if ($fields['ACTIVE'] == 'Y') {
                         $fieldsList['ACTIVE'] = 'Y';
                     } else {
                         $fieldsList['ACTIVE'] = 'N';
                     }
                 }
                 if (!empty($fieldsList)) {
                     \Bitrix\Sale\Delivery\Services\Table::setChildrenFieldsValues($ID, $fieldsList);
                 }
             }
Exemple #5
0
 /**
  * @param $arFields
  * @param array $arOptions
  * @return bool|int
  * @throws Exception
  * @deprecated
  */
 static function Add($arFields, $arOptions = array())
 {
     $fields = array_intersect_key($arFields, Bitrix\Sale\Delivery\Services\Table::getMap());
     if (array_key_exists("LOGOTIP", $arFields) && is_array($arFields["LOGOTIP"])) {
         $arFields["LOGOTIP"]["MODULE_ID"] = "sale";
         CFile::SaveForDB($arFields, "LOGOTIP", "sale/delivery/logotip");
         $fields["LOGOTIP"] = $arFields["LOGOTIP"];
     }
     $fields["PARENT_ID"] = 0;
     $fields["CLASS_NAME"] = '\\Bitrix\\Sale\\Delivery\\Services\\Configurable';
     $fields["CONFIG"] = array("MAIN" => array("PRICE" => $arFields["PRICE"], "PERIOD" => array("FROM" => $arFields["PERIOD_FROM"], "TO" => $arFields["PERIOD_TO"], "TYPE" => $arFields["PERIOD_TYPE"])));
     $res = \Bitrix\Sale\Delivery\Services\Table::add($fields);
     if (!$res->isSuccess()) {
         return false;
     }
     $newId = $res->getId();
     if (empty($arFields["CODE"])) {
         \Bitrix\Sale\Delivery\Services\Table::update($newId, array('CODE' => $newId));
     }
     $res = \Bitrix\Sale\Delivery\Restrictions\Table::add(array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite', "PARAMS" => array("SITE_ID" => array($arFields["LID"]))));
     if (intval($arFields["WEIGHT_FROM"]) > 0 || intval($arFields["WEIGHT_TO"]) > 0) {
         $res = \Bitrix\Sale\Delivery\Restrictions\Table::add(array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByWeight', "PARAMS" => array("MIN_WEIGHT" => $arFields["WEIGHT_FROM"], "MAX_WEIGHT" => $arFields["WEIGHT_TO"])));
     }
     if (intval($arFields["ORDER_PRICE_FROM"]) > 0 || intval($arFields["ORDER_PRICE_TO"]) > 0) {
         $res = \Bitrix\Sale\Delivery\Restrictions\Table::add(array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPrice', "PARAMS" => array("MIN_PRICE" => $arFields["ORDER_PRICE_FROM"], "MAX_PRICE" => $arFields["ORDER_PRICE_TO"], "CURRENCY" => $arFields["ORDER_CURRENCY"])));
     }
     if (isset($arFields["LOCATIONS"]) && is_array($arFields["LOCATIONS"])) {
         Helper::resetLocationsForEntity($newId, $arFields['LOCATIONS'], self::CONN_ENTITY_NAME, !!$arOptions['EXPECT_LOCATION_CODES']);
     }
     if (isset($arFields["PAY_SYSTEM"])) {
         CSaleDelivery::UpdateDeliveryPay($newId, $arFields["PAY_SYSTEM"]);
     }
     if (isset($arFields["STORE"])) {
         $stores = unserialize($arFields["STORE"]);
         if ($stores) {
             \Bitrix\Sale\Delivery\ExtraServices\Manager::saveStores($newId, $stores);
         }
     }
     return $newId;
 }