function Compability($arOrder, $arConfig) { $result = array(); $aviableBoxes = CSaleDeliveryHelper::getBoxesFromConfig('distant_inner', $arConfig); foreach ($aviableBoxes as $arBox) { if (CSaleDeliveryHandler::checkDimensions($arOrder["MAX_DIMENSIONS"], $arBox["DIMENSIONS"])) { $result = array('distant_inner'); break; } } return $result; }
public static function preparePreregistrationReqData($arOrder, $profileId, $arConfig) { $result = array(); $result["sender"] = array("inn" => $arConfig["INN"]["VALUE"], "city" => static::getFilialAndCity($arConfig["CITY_DELIVERY"]["VALUE"]), "title" => $arConfig["NAME"]["VALUE"], "phone" => $arConfig["PHONE"]["VALUE"]); $inn = ""; $city = ""; $title = ""; $phone = ""; $address = ""; if (isset($extraParams["location"])) { $city = $extraParams["location"]; } $dbOrderProps = \CSaleOrderPropsValue::GetOrderProps($arOrder["ID"]); while ($arOrderProps = $dbOrderProps->Fetch()) { if ($arOrderProps["CODE"] == "COMPANY" || $arOrderProps["CODE"] == "FIO") { $title = $arOrderProps["VALUE"]; } if ($arOrderProps["CODE"] == "INN") { $inn = $arOrderProps["VALUE"]; } if ($arOrderProps["CODE"] == "PHONE") { $phone = $arOrderProps["VALUE"]; } if ($arOrderProps["CODE"] == "LOCATION") { $location = $arOrderProps["VALUE"]; $locDelivery = Adapter::mapLocation($location); // todo: if more than one $city = static::getFilialAndCity(key($locDelivery)); } if ($arOrderProps["CODE"] == "ADDRESS") { $address = $arOrderProps["VALUE"]; } } $arPacks = \CSaleDeliveryHelper::getBoxesFromConfig($profileId, $arConfig); $arPackagesParams = \CSaleDeliveryHelper::getRequiredPacks($arOrder["ITEMS"], $arPacks, 0); $result["cargos"] = array(array("common" => array("positionsCount" => count($arPackagesParams), "decription" => GetMessage("SALE_DH_PECOM_DESCRIPTION_GOODS"), "orderNumber" => $arOrder["ACCOUNT_NUMBER"], "paymentForm" => $arConfig["PAYMENT_FORM"]["VALUE"], "accompanyingDocuments" => false), "receiver" => array("inn" => $inn, "city" => $city, "title" => $title, "phone" => $phone, "addressStock" => $address), "services" => array("transporting" => array("payer" => array("type" => 1)), "hardPacking" => array("enabled" => \CDeliveryPecom::isConfCheckedVal($arConfig, 'SERVICE_OTHER_RIGID_PACKING'), "payer" => array("type" => \CDeliveryPecom::getConfValue($arConfig, 'SERVICE_OTHER_RIGID_PAYER'))), "palletTransporting" => array("enabled" => !\CDeliveryPecom::isConfCheckedVal($arConfig, 'SERVICE_OTHER_RIGID_PACKING') && \CDeliveryPecom::isConfCheckedVal($arConfig, 'SERVICE_OTHER_PALLETE'), "payer" => array("type" => \CDeliveryPecom::getConfValue($arConfig, 'SERVICE_OTHER_PALLETE_PAYER'))), "insurance" => array("enabled" => \CDeliveryPecom::isConfCheckedVal($arConfig, 'SERVICE_OTHER_INSURANCE'), "payer" => array("type" => \CDeliveryPecom::getConfValue($arConfig, 'SERVICE_OTHER_INSURANCE_PAYER')), "cost" => intval($arOrder["PRICE"])), "sealing" => array("enabled" => \CDeliveryPecom::isConfCheckedVal($arConfig, 'SERVICE_OTHER_PLOMBIR_ENABLE'), "payer" => array("type" => \CDeliveryPecom::getConfValue($arConfig, 'SERVICE_OTHER_PLOMBIR_PAYER'))), "strapping" => array("enabled" => false), "documentsReturning" => array("enabled" => false), "delivery" => array("enabled" => \CDeliveryPecom::isConfCheckedVal($arConfig, 'SERVICE_DELIVERY_ENABLED'), "payer" => array("type" => \CDeliveryPecom::getConfValue($arConfig, 'SERVICE_OTHER_DELIVERY_PAYER')))))); return $result; }
protected function createCalcParams() { if (!isset($this->arOrder["WEIGHT"])) { throw new \Exception(GetMessage("SALE_DH_PECOM_EXCPT_WEIGHT")); } $locationTo = ""; $arLocation = Adapter::mapLocation($this->arOrder["LOCATION_TO"]); if (empty($arLocation)) { throw new \Exception(GetMessage("SALE_DH_PECOM_EXCPT_EMPTY_LOCATION")); } if (count($arLocation) > 1 && isset($this->arOrder["EXTRA_PARAMS"]["location"])) { $locationTo = $this->arOrder["EXTRA_PARAMS"]["location"]; } elseif (count($arLocation) > 1 && !isset($this->arOrder["EXTRA_PARAMS"]["location"])) { throw new \Exception(GetMessage("SALE_DH_PECOM_EXCPT_MANY_LOCATIONS")); } if (count($arLocation) == 1) { $locationTo = key($arLocation); } if (!isset($this->arOrder["ITEMS"]) || !is_array($this->arOrder["ITEMS"]) || empty($this->arOrder["ITEMS"])) { throw new \Exception(GetMessage("SALE_DH_PECOM_EXCPT_EMPTY_ITEMS")); } $measureCoeff = 1000; $itemsStr = ""; $loadingRange = true; $rigidPacking = \CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_OTHER_RIGID_PACKING'); $arPacks = \CSaleDeliveryHelper::getBoxesFromConfig($this->profileId, $this->arConfig); $arPackagesParams = \CSaleDeliveryHelper::getRequiredPacks($this->arOrder["ITEMS"], $arPacks, 0); $this->packsCount = count($arPackagesParams); for ($i = $this->packsCount - 1; $i >= 0; $i--) { $item = $arPackagesParams[$i]; $width = round(floatval($item["DIMENSIONS"]["WIDTH"]) / $measureCoeff, 2); $lenght = round(floatval($item["DIMENSIONS"]["LENGTH"]) / $measureCoeff, 2); $height = round(floatval($item["DIMENSIONS"]["HEIGHT"]) / $measureCoeff, 2); $volume = floatval($item["VOLUME"] / pow($measureCoeff, 3)); if ($width > \CDeliveryPecom::$EXTRA_DIMENSIONS_SIZE || $lenght > \CDeliveryPecom::$EXTRA_DIMENSIONS_SIZE || $height > \CDeliveryPecom::$EXTRA_DIMENSIONS_SIZE || $item["WEIGHT"] > \CDeliveryPecom::$EXTRA_DEMENSIONS_WEIGHT) { $loadingRange = false; } $itemsStr .= 'places[' . $i . '][]=' . strval($width) . '&places[' . $i . '][]=' . strval($lenght) . '&places[' . $i . '][]=' . strval($height) . '&places[' . $i . '][]=' . strval($volume) . '&places[' . $i . '][]=' . strval($item["WEIGHT"] / 1000) . '&places[' . $i . '][]=' . ($loadingRange ? '1' : '0') . '&places[' . $i . '][]=' . ($rigidPacking && \CDeliveryPecom::getConfValue($this->arConfig, 'SERVICE_OTHER_RIGID_PAYER') == \CDeliveryPecom::$PAYER_BUYER ? '1' : '0'); } if (\CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_OTHER_PLOMBIR_ENABLE') && \CDeliveryPecom::getConfValue($this->arConfig, 'SERVICE_OTHER_PLOMBIR_PAYER') == \CDeliveryPecom::$PAYER_BUYER) { $plombir = strval(intval(\CDeliveryPecom::getConfValue($this->arConfig, 'SERVICE_OTHER_PLOMBIR_COUNT'))); } else { $plombir = "0"; } if (\CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_OTHER_INSURANCE') && \CDeliveryPecom::getConfValue($this->arConfig, 'SERVICE_OTHER_INSURANCE_PAYER') == \CDeliveryPecom::$PAYER_BUYER) { $insurance = strval($this->arOrder["PRICE"]); } else { $insurance = "0"; } $result = $itemsStr . '&take[town]=' . $this->arConfig["CITY_DELIVERY"]["VALUE"] . '&take[tent]=' . (\CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_TAKE_ENABLED') && \CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_TAKE_TENT_ENABLED') ? '1' : '0') . '&take[gidro]=' . (\CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_TAKE_ENABLED') && \CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_TAKE_HYDRO_ENABLED') ? '1' : '0') . '&take[speed]=0' . '&take[moscow]=0' . '&deliver[town]=' . $locationTo . '&deliver[tent]=' . (\CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_DELIVERY_ENABLED') && \CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_DELIVERY_TENT_ENABLED') ? '1' : '0') . '&delideliver[gidro]=' . (\CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_DELIVERY_ENABLED') && \CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_DELIVERY_HYDRO_ENABLED') ? '1' : '0') . '&deliver[speed]=0' . '&deliver[moscow]=0' . '&plombir=' . $plombir . '&strah=' . $insurance . '&ashan=0'; return $result; }
function Compability($arOrder, $arConfig) { if (floatval($arOrder["WEIGHT"]) <= self::$MAX_WEIGHT) { $profiles = array('ware', 'door'); } else { $profiles = array(); } $arRes = array(); foreach ($profiles as $profile) { $aviableBoxes = CSaleDeliveryHelper::getBoxesFromConfig($profile, $arConfig); foreach ($aviableBoxes as $arBox) { if (CSaleDeliveryHandler::checkDimensions($arOrder["MAX_DIMENSIONS"], $arBox["DIMENSIONS"])) { $arRes[] = $profile; break; } } } return $arRes; }
"LOCATION_TO" => $locationData, "LOCATION_ZIP" => $locationZip, "ITEMS" => $arBasketItems ); $depList = \Bitrix\Sale\Delivery\OrderDeliveryTable::getList(array( 'filter'=>array('=ORDER_ID' => $ID), )); if($dep = $depList->fetch()) { $arDeliveryOrder["EXTRA_PARAMS"] = unserialize($dep["PARAMS"]); } $arPacks = CSaleDeliveryHelper::getBoxesFromConfig($profileId, $arDeliveryData["CONFIG"]["CONFIG"]); $arDeliveryResult = CSaleDeliveryHandler::CalculateFull($arDeliveryData["SID"], $profileId, $arDeliveryOrder, $arOrder["CURRENCY"], $LID); $delDiscountDiff = roundEx($arDeliveryResult["VALUE"] - $arOrder["PRICE_DELIVERY"], SALE_VALUE_PRECISION); $tabControl->BeginCustomField("ORDER_DELIVERY_ADDITIONAL_INFO", ""); if (!empty($arPacks)): $arBox = array_shift(array_values($arPacks)); ?> <tr> <td width="40%"></td> <td width="60%"> <a class="dashed-link" href="javascript:void(0);" onclick="fToggleDeliveryInfo();"><?php echo GetMessage("SOD_SHOW_DELIVERY_ADDITIONAL_INFO"); ?> </a></td>
function Compability($arOrder, $arConfig) { $profiles = array('land', 'avia'); $bHevyWeightEnabled = self::isConfCheckedVal($arConfig, 'service_' . self::$TARIF_HEAVY_WEIGHT . '_enabled'); $maxWeight = $bHevyWeightEnabled ? self::$MAX_WEIGHT_HEAVY : self::$MAX_WEIGHT; if (!empty($arOrder["ITEMS"]) && is_array($arOrder["ITEMS"])) { foreach ($arOrder["ITEMS"] as $arItem) { if (floatval($arItem["WEIGHT"]) > $maxWeight) { $profiles = array(); break; } } } $arRes = array(); foreach ($profiles as $profile) { $aviableBoxes = CSaleDeliveryHelper::getBoxesFromConfig($profile, $arConfig); foreach ($aviableBoxes as $arBox) { if (CSaleDeliveryHandler::checkDimensions($arOrder["MAX_DIMENSIONS"], $arBox["DIMENSIONS"])) { $arRes[] = $profile; break; } } } return $arRes; }