Example #1
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;
 }