Пример #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;
 }
Пример #2
0
 /**
  * Create form fields
  */
 public function formFields()
 {
     $configModel = JBModelConfig::model();
     $application = $this->_migrate->getCartApp();
     $templatePath = null;
     $orderFields = null;
     if ($application) {
         $templatePath = $application->getTemplate()->getPath();
         $orderFields = $this->_migrate->getOrderFields();
     }
     if ($templatePath && $orderFields) {
         $posFile = $templatePath . '/renderer/item/positions.config';
         $renderParams = array();
         if (JFile::exists($posFile)) {
             $posFile = $this->app->data->create(json_decode(file_get_contents($posFile), true));
             foreach ($posFile->get('jbuniversal.order.order', array()) as $position) {
                 foreach ($position as $element) {
                     $renderParams[$element['element']] = $element;
                 }
             }
         }
         foreach ($renderParams as $elemId => $renderParam) {
             if (!isset($orderFields[$elemId])) {
                 continue;
             }
             /**
              * @var AppData $config
              * @var AppData $renderParam
              */
             $config = $this->app->data->create($orderFields[$elemId]);
             $renderParam = $this->app->data->create($renderParam);
             $elemType = isset($this->_elementMap[$config['type']]) ? $this->_elementMap[$config['type']] : 'text';
             $orderElement = $this->_element->create($elemType, JBCart::ELEMENT_TYPE_ORDER, array('name' => $config->get('name'), 'description' => $config->get('description'), 'access' => $config->get('access'), 'default' => $config->get('default'), 'option' => $config->get('option'), 'multiple' => $config->get('multiple')));
             $list = $configModel->getGroup('cart.field');
             $list[JBCart::DEFAULT_POSITION][$orderElement->identifier] = (array) $orderElement->config;
             $configModel->setGroup('cart.field', $list);
             $renderElement = array('user_field' => '', 'showlabel' => '0', 'altlabel' => $renderParam->get('altlabel'), 'required' => $renderParam->get('required', 0), 'type' => $orderElement->getElementType(), 'group' => $orderElement->getElementGroup(), 'identifier' => $orderElement->identifier);
             $list = $configModel->getGroup('cart.field_tmpl.default');
             $list[JBCart::DEFAULT_POSITION][] = $renderElement;
             $configModel->setGroup('cart.field_tmpl.default', $list);
         }
     }
 }