示例#1
0
 /**
  * Set order status & insert information to Status History
  *
  * @param integer|string $statusId
  * @param string $comments
  * @param bool $notifyCustomer
  * @return bool
  */
 public function setStatus($statusId, $comments = '', $notifyCustomer = false)
 {
     if (is_string($statusId) && in_array($statusId, array_values(Axis_Collect_OrderStatus::collect()))) {
         $status = $statusId;
         $statusId = Axis::single('sales/order_status')->getIdByName($status);
     } else {
         $status = Axis_Collect_OrderStatus::getName($statusId);
     }
     /* Relation exist or not */
     $childrens = Axis::single('sales/order_status_relation')->getChildrens($this->order_status_id);
     if (!in_array($statusId, $childrens)) {
         Axis::message()->addError(Axis::translate('sales')->__('Relation not exist %s <=> %s', $this->order_status_id, $statusId));
         return false;
     }
     $retMethod = Axis::single('sales/order_status_run')->{$status}($this);
     if (!$retMethod) {
         $status = 'failed';
         Axis::single('sales/order_status_run')->failed($this);
         $statusId = Axis::single('sales/order_status')->getIdByName('failed');
         $notifyCustomer = false;
         $messages = array();
         foreach (Axis::message()->get() as $messageGroup) {
             $comments .= ' ' . implode('.', $messageGroup);
         }
     }
     $this->order_status_id = $statusId;
     $this->save();
     /* save Status History */
     $this->addComment($comments, $notifyCustomer, $statusId);
     //        $message = Axis::translate('sales')->__(
     //            "Order status was changed to %s", $status
     //        );
     //        if ($status == 'failed' && Axis_Area::isFrontend()) {
     //            Axis::message()->addError($message);
     //            if (!$retMethod) {
     //                Axis::message()->addError($comments);
     //            }
     //        } else {
     //            Axis::message()->addSuccess($message);
     //        }
     return $retMethod;
 }
 public function loadAction()
 {
     if (!($customer = Axis::single('account/customer')->find((int) $this->_getParam('id'))->current())) {
         Axis::message()->addError(Axis::translate('Axis_Account')->__("Customer '%s' not found", $this->_getParam('id')));
         return $this->_helper->json->sendFailure();
     }
     $data = array();
     $data['customer'] = $customer->toArray();
     // custom fields
     $data['custom_fields'] = array();
     foreach ($customer->getDetails() as $item) {
         if (isset($data['custom_fields']['field_' . $item['customer_field_id']])) {
             $data['custom_fields']['field_' . $item['customer_field_id']] .= ',' . $item['customer_valueset_value_id'];
         } else {
             $data['custom_fields']['field_' . $item['customer_field_id']] = isset($item['data']) ? $item['data'] : $item['customer_valueset_value_id'];
         }
     }
     // address
     $data['address'] = array();
     $rowset = Axis::single('account/customer_address')->getSortListByCustomerId($customer->id);
     foreach ($rowset as $address) {
         $data['address'][] = $address->toArray();
     }
     // orders
     $orders = Axis::single('sales/order')->fetchAll($this->db->quoteInto('customer_id = ?', $customer->id));
     $orderStatus = Axis_Collect_OrderStatus::collect();
     $orderStatusText = Axis_Collect_OrderStatusText::collect();
     $data['order'] = array();
     $i = 0;
     foreach ($orders as $order) {
         $data['order'][$i] = $order->toArray();
         $data['order'][$i]['product'] = array_values($order->getProducts());
         foreach ($data['order'][$i]['product'] as &$product) {
             $product['price'] = $product['price'] * $order->currency_rate;
             $product['final_price'] = $product['final_price'] * $order->currency_rate;
             $product['product_subtotal'] = $product['final_price'] * $product['quantity'];
         }
         if (isset($orderStatusText[$order['order_status_id']])) {
             $data['order'][$i]['status'] = $orderStatusText[$order['order_status_id']];
         } else {
             $data['order'][$i]['status'] = isset($orderStatus[$order['order_status_id']]) ? $orderStatus[$order['order_status_id']] : $order['order_status_id'];
         }
         $i++;
     }
     // shopping cart
     $data['shopping_cart'] = array();
     if ($cart = Axis::single('checkout/cart')->getCustomerCart($customer->id)) {
         $data['shopping_cart'] = array_values($cart->getProducts());
         foreach ($data['shopping_cart'] as &$product) {
             $product['attributes'] = array_values($product['attributes']);
         }
     }
     return $this->_helper->json->setData($data)->sendSuccess();
 }
示例#3
0
 public function __call($call, $argv)
 {
     return in_array($call, Axis_Collect_OrderStatus::collect());
 }