Example #1
0
 /**
  * @param Item $order
  * @return JBCartOrder
  */
 protected function _convertOrder(Item $order)
 {
     $newOrder = new JBCartOrder();
     $cartElement = current($order->getElementsByType('jbbasketitems'));
     if (!$cartElement) {
         return null;
     }
     $orderItems = $cartElement->getOrderItems();
     $data = (array) $cartElement->data();
     $newOrder->id = -1;
     $newOrder->modified = $order->modified;
     $newOrder->created = $order->created;
     $newOrder->created_by = $order->created_by;
     $newOrder->params = new ParameterData();
     $newOrder->params->set('config', array('default_currency' => $this->_migrate->getCurrency(), 'migration_currency' => $this->_migrate->getCurrency()));
     $paymentElement = $this->_createPayment($data);
     $paymentElement->setOrder($newOrder);
     $newOrder->setPaymentElement($paymentElement);
     $fieldsElement = $this->_createOrderElement($order);
     $fieldsElement->setOrder($newOrder);
     $newOrder->addOrderElement($fieldsElement);
     $newOrder->setStatusList($this->_statusList);
     $newList = array();
     $totalSum = $newOrder->val(0);
     foreach ($orderItems as $orderItem) {
         $key = md5(serialize($orderItem));
         $orderItem = $this->app->data->create($orderItem);
         $totalPrice = $newOrder->val($orderItem->get('price') . ' ' . $orderItem->get('currency'));
         $newList[$key] = array('key' => $key, 'item_id' => $orderItem->get('itemId'), 'item_name' => $orderItem->get('name'), 'element_id' => '', 'total' => $totalPrice->data(true), 'quantity' => $orderItem->get('quantity'), 'template' => array(), 'values' => (array) $orderItem->get('priceParams'), 'elements' => array('_value' => $totalPrice->data(true), '_sku' => $orderItem->get('sku'), '_description' => $orderItem->get('priceDesc')), 'params' => array('quantity' => array('min' => 1, 'max' => 1000, 'step' => 1, 'default' => 1, 'decimals' => 0)), 'modifiers' => array(), 'variations' => array(), 'variant' => 0);
         $totalSum->add($totalPrice);
     }
     $newOrder->setItemsData(json_encode($newList));
     $newOrder->total = $totalSum->val();
     if (isset($data['order_info'])) {
         if (isset($data['order_info']['status'])) {
             $newOrder->setStatus($data['order_info']['status'], JBCart::STATUS_ORDER);
             $newOrder->setStatus($data['order_info']['status'], JBCart::STATUS_PAYMENT);
         }
         if (isset($data['order_info']['description'])) {
             $newOrder->comment = $data['order_info']['description'];
         }
     }
     return $newOrder;
 }
Example #2
0
 /**
  * Get weight element from item, using mapping
  *
  * @param   Item    $item
  *
  * @return  mixed
  */
 public function getWeightElement($item)
 {
     $element = null;
     if (!empty($item)) {
         $elements = $item->getElementsByType('measurespro');
         if (!empty($elements)) {
             foreach ($elements as $check_element) {
                 if ($check_element->isWeight()) {
                     // Weight element found - take it and escape cycle
                     $element = $check_element;
                     break;
                 }
             }
             if (empty($element)) {
                 // Take only first element:
                 $element = array_shift($elements);
             }
         }
     }
     return $element;
 }
Example #3
0
 /**
  * @param Item $item
  * @return bool
  */
 public function _convertItem(Item $item)
 {
     $oldPrices = $item->getElementsByType('jbpriceadvance');
     $oldPrice = current($oldPrices);
     if (!$oldPrice) {
         return false;
     }
     $oldData = $this->app->data->create($oldPrice->data());
     $params = $this->app->data->create($this->_migrate->getParams()->find('elements.' . $oldPrice->identifier));
     $newPriceData = array('default_variant' => 0, 'variations' => array(array('_sku' => array('value' => $oldData->find('basic.sku')), '_balance' => array('value' => $oldData->find('basic.balance')), '_value' => array('value' => $oldData->find('basic.value') . ' ' . $oldData->find('basic.currency')), '_discount' => array('value' => $oldData->find('basic.discount') . ' ' . $oldData->find('basic.discount_currency')), '_description' => array('value' => $oldData->find('basic.description')))));
     $variations = (array) $oldData->find('variations', array());
     foreach ($variations as $vari) {
         /** @var AppData $vari */
         $vari = $this->app->data->create($vari);
         $newPriceData['variations'][] = array('_value' => array('value' => $vari->get('value') . ' ' . $vari->get('currency')), '_balance' => array('value' => $vari->get('balance')), '_sku' => array('value' => $vari->get('sku')), 'param1' => array('value' => $params->find('map.param1.options-map.' . $vari->get('param1'))), 'param2' => array('value' => $params->find('map.param2.options-map.' . $vari->get('param2'))), 'param3' => array('value' => $params->find('map.param3.options-map.' . $vari->get('param3'))), 'old-description' => array('value' => $vari->get('description')));
     }
     /** @var ElementJBPricePlain $newPrice */
     $newPriceId = $params->get('id');
     if ($newPriceId && ($newPrice = $item->getElement($newPriceId))) {
         $newPrice->bindData($newPriceData);
     }
     return true;
 }