/** * @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; }
/** * @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'); }
/** * @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'); }