Esempio n. 1
0
	function executeAction($deliveryId, $actionId, $arOrder)
	{
		$result = array();
		$arDId = CSaleDeliveryHelper::getDeliverySIDAndProfile($deliveryId);

		if (!defined('SALE_DH_INITIALIZED'))
			CSaleDeliveryHandler::Initialize();

		$rsDeliveryHandler = CSaleDeliveryHandler::GetBySID($arDId["SID"]);

		if ($arHandler = $rsDeliveryHandler->Fetch())
		{
			if (isset($arHandler["EXECUTEACTION"]) && is_callable($arHandler["EXECUTEACTION"]))
			{
				$result = call_user_func($arHandler["EXECUTEACTION"], $actionId, $arDId["PROFILE"], $arOrder, $arHandler["CONFIG"]["CONFIG"]);
			}
		}

		return $result;
	}
Esempio n. 2
0
 public static function execOldEventWithNewParams(Bitrix\Main\Event $params)
 {
     /** @var \Bitrix\Sale\Shipment $shipment*/
     if (!($shipment = $params->getParameter("SHIPMENT"))) {
         return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR, null, 'sale');
     }
     /** @var \Bitrix\Sale\Delivery\Services\Base $deliverySrv */
     if (!($deliverySrv = $shipment->getDelivery())) {
         return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR, null, 'sale');
     }
     if (get_class($deliverySrv) != 'Bitrix\\Sale\\Delivery\\Services\\AutomaticProfile') {
         return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR, null, 'sale');
     }
     if (!($code = $deliverySrv->getCode())) {
         return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR, null, 'sale');
     }
     $sidAndProfile = \CSaleDeliveryHelper::getDeliverySIDAndProfile($code);
     /** @var \Bitrix\Sale\Delivery\CalculationResult $result*/
     if (!($result = $params->getParameter("RESULT"))) {
         throw new \Bitrix\Main\ArgumentNullException("params[RESULT]");
     }
     if (!($collection = $shipment->getCollection())) {
         return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR, null, 'sale');
     }
     /** @var \Bitrix\Sale\Order $order */
     if (!($order = $collection->getOrder())) {
         return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR, null, 'sale');
     }
     $oldOrder = \Bitrix\Sale\Compatible\OrderCompatibility::convertOrderToArray($order);
     $oldResult = array("VALUE" => $result->getPrice(), "TRANSIT" => $result->getPeriodDescription(), "TEXT" => $result->isSuccess() ? $result->getDescription() : implode("<br>\n", $result->getErrorMessages()), "RESULT" => $result->isSuccess() ? "OK" : "ERROR");
     if ($result->isNextStep()) {
         $oldResult["RESULT"] = "NEXT_STEP";
     }
     if ($result->isSuccess() && strlen($result->getDescription()) > 0) {
         $oldResult["RESULT"] = "NOTE";
     }
     if (intval($result->getPacksCount()) > 0) {
         $oldResult["PACKS_COUNT"] = $result->getPacksCount();
     }
     if ($result->isNextStep() && strlen($result->getTmpData()) > 0) {
         $oldResult["TEMP"] = CUtil::JSEscape($result->getTmpData());
     }
     $oldResult = self::__executeCalculateEvents($sidAndProfile["SID"], $sidAndProfile["PROFILE"], $oldOrder, $oldResult);
     $result->setDeliveryPrice($oldResult["VALUE"]);
     if ($oldResult["RESULT"] == "ERROR") {
         $result->addError(new \Bitrix\Main\Entity\EntityError($oldResult["TEXT"]));
     } elseif ($oldResult["RESULT"] == "NEXT_STEP") {
         $result->setAsNextStep();
     }
     if (isset($oldResult["TRANSIT"])) {
         $result->setPeriodDescription($oldResult["TRANSIT"]);
     }
     if (isset($oldResult["TEXT"])) {
         $result->setDescription($oldResult["TEXT"]);
     }
     if (isset($oldResult["PACKS_COUNT"])) {
         $result->setPacksCount($oldResult["PACKS_COUNT"]);
     }
     if (isset($oldResult["TEMP"])) {
         $result->setTmpData($oldResult["TEMP"]);
     }
     return $result;
 }
 /**
  * UpdatePaySystem
  *
  * @param int $ID Pay system id.
  * @param array $arFields delivery idenificators.
  *
  * @return bool true if success or false otherwise.
  */
 public static function UpdatePaySystem($ID, $arFields)
 {
     $ID = trim($ID);
     $arUpdateFields = array("PAYSYSTEM_ID" => $ID);
     if (strlen($ID) <= 0 || !is_array($arFields) || empty($arFields)) {
         return false;
     }
     if ($arFields[0] == "") {
         unset($arFields[0]);
     }
     self::Delete($arUpdateFields);
     $arRecords = array();
     foreach ($arFields as $deliveryId) {
         $delivery = CSaleDeliveryHelper::getDeliverySIDAndProfile($deliveryId);
         if (!isset($delivery["SID"])) {
             continue;
         }
         $arUpdateFields["DELIVERY_ID"] = $delivery["SID"];
         if (isset($delivery["PROFILE"])) {
             $arUpdateFields["DELIVERY_PROFILE_ID"] = $delivery["PROFILE"];
         } else {
             $arUpdateFields["DELIVERY_PROFILE_ID"] = null;
         }
         self::Add($arUpdateFields);
         $arRecords[] = $arUpdateFields;
     }
     return true;
 }