Пример #1
0
 /**
  * @internal
  * @param Sale\Order $order
  * @return array
  */
 public static function convertOrderToArray(Sale\Order $order)
 {
     $fields = $order->getFieldValues();
     //getWeight
     $fields = array_merge($fields, array('ORDER_WEIGHT' => 0, 'BASKET_ITEMS' => array(), 'ORDER_PROP' => array(), 'DISCOUNT_LIST' => array(), 'TAX_LIST' => array(), 'VAT_RATE' => $order->getVatRate(), 'VAT_SUM' => $order->getVatSum()));
     /** @var Sale\Basket $basket */
     if ($basket = $order->getBasket()) {
         /** @var Sale\BasketItem $basketItem */
         foreach ($basket as $basketItem) {
             $fields['BASKET_ITEMS'][] = BasketCompatibility::convertBasketItemToArray($basketItem);
         }
     }
     /** @var Sale\PropertyValueCollection $basket */
     if ($propertyCollection = $order->getPropertyCollection()) {
         /** @var Sale\PropertyValue $property */
         foreach ($propertyCollection as $property) {
             //				$propertyValue = $property->getValue();
             $fields['ORDER_PROP'][$property->getPropertyId()] = $property->getValue();
         }
     }
     if ($propProfileName = $propertyCollection->getProfileName()) {
         $fields['PROFILE_NAME'] = $propProfileName->getValue();
     }
     if ($propPayerName = $propertyCollection->getPayerName()) {
         $fields['PAYER_NAME'] = $propPayerName->getValue();
     }
     if ($propUserEmail = $propertyCollection->getUserEmail()) {
         $fields['USER_EMAIL'] = $propUserEmail->getValue();
     }
     if ($propDeliveryLocationZip = $propertyCollection->getDeliveryLocationZip()) {
         $fields['DELIVERY_LOCATION_ZIP'] = $propDeliveryLocationZip->getValue();
     }
     if ($propDeliveryLocation = $propertyCollection->getDeliveryLocation()) {
         $fields['DELIVERY_LOCATION'] = $propDeliveryLocation->getValue();
     }
     if ($propTaxLocation = $propertyCollection->getTaxLocation()) {
         $fields['TAX_LOCATION'] = $propTaxLocation->getValue();
     }
     /** @var Sale\ShipmentCollection $shipmentCollection */
     if ($shipmentCollection = $order->getShipmentCollection()) {
         $fields['ORDER_WEIGHT'] = $shipmentCollection->getWeight();
     }
     $fields['DISCOUNT_LIST'] = DiscountCompatibility::getOldDiscountResult();
     /** @var Sale\Tax $tax */
     if ($tax = $order->getTax()) {
         $fields['TAX_LIST'] = $tax->getTaxList();
     }
     return $fields;
 }
Пример #2
0
 /**
  * @param Main\Event $event
  *
  * @return Main\EventResult
  */
 public static function onBasketItemChange(Main\Event $event)
 {
     $parameters = $event->getParameters();
     /** @var Sale\BasketItem $basketItem */
     $basketItem = $parameters[0];
     if (!$basketItem instanceof Sale\BasketItem) {
         return new Main\EventResult(Main\EventResult::ERROR, new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_COMPATIBILITY_BASKET_ITEM_CHANGE_WRONG_BASKET'), 'SALE_EVENT_COMPATIBILITY_BASKET_ITEM_CHANGE_WRONG_BASKET'), 'sale');
     }
     $currentBasketFields = $basketFields = BasketCompatibility::convertBasketItemToArray($basketItem);
     if ($basketItem->getId() == 0) {
         foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BEFORE_BASKET_ITEM_ADD, true) as $oldEvent) {
             if (ExecuteModuleEventEx($oldEvent, array(&$basketFields)) === false) {
                 continue;
             }
         }
     } else {
         foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BEFORE_BASKET_ITEM_UPDATE, true) as $oldEvent) {
             if (ExecuteModuleEventEx($oldEvent, array($basketItem->getId(), &$basketFields)) === false) {
                 continue;
             }
         }
     }
     foreach ($currentBasketFields as $key => $value) {
         if (isset($basketFields[$key]) && $basketFields[$key] != $value) {
             $basketItem->setFieldNoDemand($key, $basketFields[$key]);
         }
     }
     return new Main\EventResult(Main\EventResult::SUCCESS, null, 'sale');
 }
Пример #3
0
 /**
  * @param Main\Event $event
  *
  * @return Main\EventResult
  */
 public static function onBasketItemChange(Main\Event $event)
 {
     $parameters = $event->getParameters();
     /** @var Sale\BasketItem $basketItem */
     $basketItem = $parameters['ENTITY'];
     $isNew = $parameters['IS_NEW'];
     $oldValues = $parameters['VALUES'];
     if (!$basketItem instanceof Sale\BasketItem) {
         return new Main\EventResult(Main\EventResult::ERROR, new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_COMPATIBILITY_BASKET_ITEM_CHANGE_WRONG_BASKET'), 'SALE_EVENT_COMPATIBILITY_BASKET_ITEM_CHANGE_WRONG_BASKET'), 'sale');
     }
     $basketFields = BasketCompatibility::convertBasketItemToArray($basketItem);
     if (!$isNew) {
         foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BASKET_ITEM_UPDATE, true) as $oldEvent) {
             ExecuteModuleEventEx($oldEvent, array($basketItem->getId(), $basketFields));
         }
     }
     if (array_key_exists('QUANTITY', $oldValues) && $basketFields['QUANTITY'] - $oldValues['QUANTITY'] > 0) {
         foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BASKET_ITEM_ADD, true) as $oldEvent) {
             ExecuteModuleEventEx($oldEvent, array($basketItem->getId(), $basketFields));
         }
     }
     return new Main\EventResult(Main\EventResult::SUCCESS, null, 'sale');
 }