public function action_complete($order_id = null) { if (!$this->check_logged()) { \Messages::error('You must be logged in if you want to continue with your order.'); \Response::redirect(\Uri::create('order/checkout/address')); } $user = \Sentry::user(); $order = \Order\Model_Order::find(array('where' => array('id' => $order_id, 'user_id' => $user->get('id')))); \Theme::instance()->set_partial('content', $this->view_dir . 'complete')->set('user', $user, false)->set('order', $order, false); }
public static function credit_account($user_id = null, $new_amount = 0) { if (is_numeric($user_id) && \Sentry::user_exists((int) $user_id)) { $user = \Sentry::user((int) $user_id); } else { $user = \Sentry::user(); } $out['credit'] = false; if ($user->get('metadata.credit_account') != 1) { return $out; } $out['credit'] = true; if ($month = $user->get('metadata.purchase_limit_period')) { $start = strtotime(date('m-01-Y', strtotime("-{$month} month"))); $orders_total = 0; $orders = \Order\Model_Order::find(array('where' => array(array('created_at', '>', $start), 'user_id' => $user->get('id'), 'finished' => 1))); if ($orders) { foreach ($orders as $order) { $orders_total += $order->total_price + $order->shipping_price; } } if ($orders_total + $new_amount > $user->get('metadata.purchase_limit_value')) { $out['over_limit'] = true; $out['over_limit_amount'] = $orders_total + $new_amount - $user->get('metadata.purchase_limit_value'); } else { $out['over_limit'] = false; $out['over_limit_amount'] = 0; } $out['orders_total'] = $orders_total; $out['limit'] = $user->get('metadata.purchase_limit_value'); $out['period'] = $user->get('metadata.purchase_limit_period'); } if (is_numeric(\Session::get('order.id'))) { $order = \Order\Model_Order::find_one_by_id(\Session::get('order.id')); if (isset($order)) { $new_amount = $order->total_price + $order->shipping_price - $order->discount_amount; } } $out['current_total'] = $new_amount; return $out; }
/** * Order details * * @access public * @param int $id = Order ID * @return void */ public function action_order($id = false) { \View::set_global('title', 'Order'); \Config::load('order::order', 'order'); // Get current user $user = \Sentry::user(); $user_ids = array($user->id); $master_user = false; if (isset($user['metadata']['master']) && $user['metadata']['master']) { $master_user = true; } // Get all orders from subusers if this is master user if ($master_user) { $user_group = $user->groups(); $user_group = $user_group[0]; $users = \Sentry::group($user_group['id'])->users(); // Reset to empty array if there are no result found by query if (is_null($users)) { $users = array(); } foreach ($users as $subuser) { array_push($user_ids, $subuser['id']); } } // Get order $order = \Order\Model_Order::find(function ($query) use($user_ids, $id) { $query->where('id', $id); $query->and_where('user_id', 'IN', $user_ids); $query->and_where('finished', 1); }); if (!$order) { \Messages::error('Order with that ID does not exist or has been deleted.'); \Response::redirect(\Uri::front_create('user/account/orders')); } // Load order config \Config::load('order::order', 'order'); // Get order products $items = \Order\Model_Products::find(array('where' => array('order_id' => $id))); \Theme::instance()->set_partial('content', $this->view_dir . 'order')->set('items', $items, false)->set('order', $order[0], false)->set('order_status', \Config::get('order.status', array()), false)->set('user', $user, false); }
public function get_search_sales_by_month() { $years = \Order\Model_Order::find(array('where' => array(array('total_price', 'is not', NULL)))); $year_list = array(); $month_list = array(); foreach ($years as $year) { $year = date('Y', $year->created_at); if (!in_array($year, $year_list)) { $year_list += array($year => $year); } } $get_first_year = $year_list; rsort($get_first_year); krsort($year_list); if (\Input::get()) { if (\Input::get('year') != 'select') { $choose_year = \Input::get('year') ? \Input::get('year') : $get_first_year[0]; for ($i = 1; $i <= 12; $i++) { $timestamp = mktime(0, 0, 1, $i, 1, date("Y")); $month = date("F", $timestamp); $results = \DB::query('SELECT sum(total_price) as total_amount from orders where year(FROM_UNIXTIME(created_at)) = ' . $choose_year . ' and month(FROM_UNIXTIME(created_at)) = ' . $i)->execute(); array_push($month_list, array('month' => array('name' => $month, 'amount' => number_format($results[0]['total_amount'], 2)))); } } } return array('items' => $month_list, 'years' => $year_list); }
/** * Update Order * * @param type $id = Order ID */ public function action_update($id = false) { if (!is_numeric($id)) { \Response::redirect('admin/order/list'); } // Get order to edit if (!($order = \Order\Model_Order::find_one_by_id($id))) { \Response::redirect('admin/order/list'); } \View::set_global('title', 'Edit Order'); if (\Input::post('order_details', false) && \Input::post('customer_details', false)) { try { $fields = array('status', 'shipping_method', 'tracking_no'); $events = array(); foreach ($fields as $field) { $config = \Config::get('details.' . $field, array()); if (isset($config[\Input::post($field)]) && $order->{$field}) { $value = $config[\Input::post($field)]; } else { $value = \Inflector::humanize(\Input::post($field)); } if (isset($config[$order->{$field}])) { $old_value = $config[$order->{$field}]; } else { $old_value = \Inflector::humanize($order->{$field}); } if ($order->{$field} != \Input::post($field)) { $events[] = \Inflector::humanize($field) . ' changed. ' . $old_value . ' => ' . $value; } $data[$field] = \Input::post($field); } // Send to customer if (\Input::post('send_to_customer_payment')) { //echo 'send_to_customer_payment'; exit; } if (\Input::post('send_to_customer_shipping')) { //echo 'send_to_customer_shipping'; exit; } $order->set($data); if ($order->save() && !empty($events)) { foreach ($events as $event) { $order_history = Model_History::forge(array('order_id' => $order->id, 'event' => $event)); $order_history->save(); } } \Messages::success('Order successfully updated.'); if (\Input::post('status') == 'shipped_to_customer') { $this->sendNoticeShipped(\Order\Model_Order::find_one_by_id($id)); } // if(\Input::post('exit')) \Response::redirect(\Uri::create('admin/order/list')); // \Response::redirect(\Uri::admin('current')); } catch (\Database_Exception $e) { \Messages::error('<strong>' . 'There was an error while trying to update order.' . '</strong>'); } // } // if(\Input::post('customer_details', false)) // { $val = Model_Order::validate('update'); if ($val->run()) { try { $order->set(\Input::post()); if ($order->save()) { $order_history = Model_History::forge(array('order_id' => $order->id, 'event' => 'Customer details edited.')); $order_history->save(); // \Messages::success('Order successfully updated.'); if (\Input::post('exit')) { \Response::redirect(\Uri::create('admin/order/list')); } \Response::redirect(\Uri::admin('current')); } } catch (\Database_Exception $e) { \Messages::error('<strong>' . 'There was an error while trying to update order.' . '</strong>'); } } else { // Delete uploaded images if there is news saving error if (isset($this->_image_data)) { foreach ($this->_image_data as $image_data) { $this->delete_image($image_data['saved_as']); } } if ($val->error() != array()) { // show validation errors \Messages::error('<strong>There was an error while trying to update member</strong>'); foreach ($val->error() as $e) { \Messages::error($e->get_message()); } } } } if (\Input::post('upload_type', false) && \Input::post('upload', false)) { $this->uploads($id); } if (\Input::post('order_edit', false)) { $post = \Input::post(); \Messages::success('Order successfully updated.'); if (\Input::post('exit')) { \Response::redirect(\Uri::create('admin/order/list')); } \Response::redirect(\Uri::admin('current')); } $user = $this->get_user($order->user_id); $orders = \Order\Model_Order::find(array('order_by' => array('id' => 'asc'))); $this_class = $this; $get_user = function ($user_id) use($this_class) { return $this_class->get_user($user_id); }; $get_attributes = function ($attributes) use($this_class) { return $this_class->attributes_to_string($attributes); }; \Theme::instance()->set_partial('content', $this->view_dir . 'update')->set(compact('user', 'order', 'orders'), null, false)->set('get_user', $get_user, false)->set('get_attributes', $get_attributes, false); }
public function get_search_items2($user_id = false) { // Override group_id if its a search $user_id = \Input::get('user_id', $user_id); if ($user_id && \Sentry::user_exists((int) $user_id)) { $user = \Sentry::user((int) $user_id); } $items = \Order\Model_Order::find(function ($query) { if (isset($user)) { $query->where('user_id', $user->id); } $query->order_by('main_number', 'desc'); $query->order_by('id', 'asc'); }); foreach (\Input::get() as $key => $value) { if (!empty($value) || $value == '0') { switch ($key) { case 'title': foreach ($items as $number => $item) { $full_name = $item->first_name . ' ' . $item->last_name; if (stripos($item->company, $value) === false) { if (stripos($full_name, $value) === false) { unset($items[$number]); } } } break; case 'email': foreach ($items as $number => $item) { if (stripos($item->email, $value) === false) { unset($items[$number]); } } break; case 'custom_order_status': if (array_key_exists($value, \Config::get('details.status', array()))) { foreach ($items as $number => $item) { if ($item->status != $value) { unset($items[$number]); } } } break; case 'order_total_from': is_numeric($value) or $value = 0; foreach ($items as $number => $item) { $item_details = \Order\Model_Order::order_info($item->id); if ($item_details['total_price'] < $value) { unset($items[$number]); } } break; case 'order_total_to': is_numeric($value) or $value = 0; foreach ($items as $number => $item) { $item_details = \Order\Model_Order::order_info($item->id); if ($item_details['total_price'] > $value) { unset($items[$number]); } } break; case 'date_from': if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->created_at < $date) { unset($items[$number]); } } } break; case 'date_to': if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->created_at > $date) { unset($items[$number]); } } } break; case 'sch_from': if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->sch_delivery < $date) { unset($items[$number]); } } } break; case 'sch_to': if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->sch_delivery > $date) { unset($items[$number]); } } } break; case 'status': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->status, $value) === false) { unset($items[$number]); } } break; case 'invoice_status': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->invoice_status, $value) === false) { unset($items[$number]); } } break; case 'delivery_status': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->delivery_status, $value) === false) { unset($items[$number]); } } break; case 'user_group': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (!\Sentry::user_exists((int) $item->user_id) || !\Sentry::user((int) $item->user_id)->in_group($value)) { unset($items[$number]); } } break; } } } // Reset to empty array if there are no result found by query if (is_null($items)) { $items = array(); } // Initiate pagination $pagination = \Hybrid\Pagination::make(array('total_items' => count($items), 'per_page' => \Input::get('per_page', 10), 'uri_segment' => null)); // Remove unwanted items, and show only required ones $items = array_slice($items, $pagination->offset, $pagination->per_page); return array('items' => $items, 'pagination' => $pagination); }
public function get_search_sales_by_date() { $years = \Order\Model_Order::find(array('where' => array(array('total_price', 'is not', NULL)))); $year_list = array(); foreach ($years as $year) { $year = date('Y', $year->created_at); if (!in_array($year, $year_list)) { $year_list += array($year => $year); } } $get_first_year = $year_list; rsort($get_first_year); krsort($year_list); $choose_year = \Input::get('year') ? \Input::get('year') : $get_first_year[0]; $month_list = array(); for ($i = 0; $i < 12; $i++) { $timestamp = mktime(0, 0, 1, date("m") + $i, date("d"), date("Y")); $month = date("F", $timestamp); $month_list += array($i + 1 => $month); } $choose_month = \Input::get('month') ? \Input::get('month') : 1; $number_of_days = cal_days_in_month(null, $choose_month, $choose_year); $items = array(); if (\Input::get()) { for ($i = 1; $i <= $number_of_days; $i++) { $results = \DB::query('SELECT sum(total_price) as total_price from orders where year(FROM_UNIXTIME(created_at)) = ' . $choose_year . ' and month(FROM_UNIXTIME(created_at)) = ' . $choose_month . ' and day(FROM_UNIXTIME(created_at)) = ' . $i)->execute(); array_push($items, array('amount' => $results[0]['total_price'], 'date' => $i . '/' . $choose_month . '/' . $choose_year)); } } return array('months' => $month_list, 'years' => $year_list, 'dates' => $items); }