示例#1
0
 public function fulfillmentAction()
 {
     $clearArray = array('fulfillment_id', 'o_status');
     $this->filter($clearArray);
     if (!isset($this->params['r_dates'])) {
         $today = date("d.m.Y");
         $this->params['r_dates'] = $today . '-' . $today;
     }
     if (!isset($this->params['show_orders'])) {
         $this->params['show_orders'] = 0;
     }
     $pagination = new Pagination(array('action' => $this->action, 'controller' => $this->controller, 'params' => $this->params, 'ajax' => true));
     $showOrders = AF::get($this->params, 'show_orders') ? true : false;
     if ($showOrders && isset($this->params['from']) && in_array($this->params['from'], Fulfillment::orderSType())) {
         switch ($this->params['from']) {
             case 'shippable_orders':
                 $this->params['o_status'] = implode(',', array(Order::STATUS_OK, Order::STATUS_SENT));
                 $this->params['o_flag'] = Order::FlAG_PAID;
                 $this->params['o_not_flag'] = Order::FlAG_TEST;
                 break;
             case 'shippable_products':
                 $this->params['o_status'] = implode(',', array(Order::STATUS_OK, Order::STATUS_SENT));
                 $this->params['o_flag'] = Order::FlAG_PAID;
                 $this->params['o_not_flag'] = Order::FlAG_TEST;
                 break;
             case 'orders_pending_post':
                 $this->params['o_status'] = implode(',', array(Order::STATUS_OK));
                 $this->params['o_flag'] = Order::FlAG_PAID;
                 $this->params['o_not_flag'] = Order::FlAG_TEST;
                 break;
             case 'orders_sent_to_fulfillment':
                 $this->params['o_status'] = implode(',', array(Order::STATUS_SENT));
                 $this->params['o_flag'] = Order::FlAG_PAID;
                 $this->params['o_not_flag'] = Order::FlAG_TEST;
                 break;
             case 'orders_pending_tracking':
                 $this->params['o_status'] = implode(',', array(Order::STATUS_SENT, Order::STATUS_SHIPPED));
                 $this->params['o_flag'] = Order::FlAG_PAID;
                 $this->params['p_tracking_number'] = '';
                 $this->params['o_not_flag'] = Order::FlAG_TEST;
                 break;
             case 'shipped_orders':
                 $this->params['o_status'] = implode(',', array(Order::STATUS_SHIPPED));
                 $this->params['o_flag'] = Order::FlAG_PAID;
                 $this->params['o_not_flag'] = Order::FlAG_TEST;
                 break;
             case 'returned_orders':
                 $this->params['o_status'] = implode(',', array(Order::STATUS_RETURNED));
                 $this->params['o_not_flag'] = Order::FlAG_TEST;
                 break;
         }
     }
     $models = AFActiveDataProvider::models('Fulfillment', $this->params, $pagination);
     if ($showOrders) {
         $dataProvider = $models->getStatusReportByOrder();
         $total = null;
         $fields = array('order_id_link', 'created_formatted', 'shippable_products', 'return_reason_formatted', 'status');
     } else {
         $dataProvider = $models->getStatusReport();
         $total = $models->getTotalReport();
         $fields = array('fulfillment_formatted', 'shippable_orders_link', 'shippable_products_link', 'orders_pending_post_link', 'orders_sent_to_fulfillment_link', 'orders_pending_tracking_link', 'shipped_orders_link', 'returned_orders_link');
     }
     $filterFields = OrderLog::$FilterFields = $models->getoutFilterFields($clearArray, array('r_dates'));
     $fulfillments = $models->getReportFulfillments();
     // set ajax table
     if (AF::isAjaxRequestModels()) {
         $this->view->includeFile('_fulfillment_table', array('application', 'views', 'reports'), array('access' => $this->access, 'controller' => $this->controller, 'dataProvider' => $dataProvider, 'pagination' => $pagination, 'filterFields' => $filterFields, 'total' => $total[0], 'fields' => $fields, 'ajax' => true, 'fulfillments' => $fulfillments));
         die;
     }
     if (isset($this->params['download_csv'])) {
         $csvField = $fields;
         $changeArray = array('shippable_orders_link' => 'shippable_orders', 'shippable_products_link' => 'shippable_products', 'orders_pending_post_link' => 'orders_pending_post', 'orders_sent_to_fulfillment_link' => 'orders_sent_to_fulfillment', 'orders_pending_tracking_link' => 'orders_pending_tracking', 'shipped_orders_link' => 'shipped_orders', 'returned_orders_link' => 'returned_orders', 'order_id_link' => 'order_id', 'return_reason_formatted' => 'return_reason');
         foreach ($changeArray as $k => $v) {
             $key = array_search($k, $csvField);
             if ($key || $key === 0) {
                 $csvField[$key] = $v;
             }
         }
         Csv::printDataProviderCsv($dataProvider, $csvField, 'fulfillment_report');
     }
     Assets::css('jquery-ui');
     Assets::js('//code.jquery.com/ui/1.10.3/jquery-ui.js');
     Assets::js('dateRange/jquery.daterange');
     Assets::js('ajax_table');
     $this->render('fulfillment', array('dataProvider' => $dataProvider, 'pagination' => $pagination, 'filterFields' => $filterFields, 'fields' => $fields, 'fulfillments' => $fulfillments, 'total' => $total[0]));
 }