/** * 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(); }
public function __call($call, $argv) { return in_array($call, Axis_Collect_OrderStatus::collect()); }