Esempio n. 1
0
function wc2_register_order_data()
{
    $wc2_order = WC2_DB_Order::get_instance();
    $cart = wc2_get_cart();
    $entry_data = wc2_get_entry();
    if (empty($cart)) {
        wc2_set_log('Session is empty.', 'register_orderdata');
        return false;
    }
    if (empty($entry_data['customer']['name1']) || empty($entry_data['customer']['email']) || empty($entry_data) || empty($cart)) {
        wc2_set_log('Customer data is empty.', 'register_orderdata');
        return false;
    }
    $general_options = wc2_get_option('general');
    $payment = wc2_get_payment($entry_data['order']['payment_method']);
    foreach ($cart as $row) {
        $charges_type = wc2_get_item_charges_type($row['item_id']);
        if (!empty($charges_type)) {
            break;
        }
    }
    $args = array('cart' => $cart, 'entry_data' => $entry_data, 'member_id' => $entry_data['member_id'], 'payment' => $payment, 'charges_type' => $charges_type);
    $order_date = wc2_get_today_datetime_format();
    $order_status = 'new';
    $receipt_status = '';
    $receipted_date = '';
    if ('continue' == $charges_type) {
        $order_modified = $order_date;
    } else {
        $noreceipt_status_table = wc2_get_option('noreceipt_status');
        if (in_array($payment['settlement'], $noreceipt_status_table)) {
            $receipt_status = 'unpaid';
        }
        $order_modified = '';
    }
    $order_status = apply_filters('wc2_filter_register_orderdata_status', $order_status, $args);
    $receipt_status = apply_filters('wc2_filter_register_orderdata_receipt_status', $receipt_status, $args);
    if (!preg_match('/pending|unpaid/', $receipt_status)) {
        $receipted_date = $order_date;
    }
    $order_type = '';
    $order_check = array();
    do_action('wc2_action_register_order_data_pre', $args);
    $data = array();
    $data[ORDER_MEMBER_ID] = isset($entry_data['member_id']) ? $entry_data['member_id'] : '';
    $data[ORDER_EMAIL] = isset($entry_data['customer']['email']) ? $entry_data['customer']['email'] : '';
    $data[ORDER_NAME1] = isset($entry_data['customer']['name1']) ? $entry_data['customer']['name1'] : '';
    $data[ORDER_NAME2] = isset($entry_data['customer']['name2']) ? $entry_data['customer']['name2'] : '';
    $data[ORDER_NAME3] = isset($entry_data['customer']['name3']) ? $entry_data['customer']['name3'] : '';
    $data[ORDER_NAME4] = isset($entry_data['customer']['name4']) ? $entry_data['customer']['name4'] : '';
    $data[ORDER_COUNTRY] = isset($entry_data['customer']['country']) ? $entry_data['customer']['country'] : '';
    $data[ORDER_ZIPCODE] = isset($entry_data['customer']['zipcode']) ? $entry_data['customer']['zipcode'] : '';
    $data[ORDER_PREF] = isset($entry_data['customer']['pref']) ? $entry_data['customer']['pref'] : '';
    $data[ORDER_ADDRESS1] = isset($entry_data['customer']['address1']) ? $entry_data['customer']['address1'] : '';
    $data[ORDER_ADDRESS2] = isset($entry_data['customer']['address2']) ? $entry_data['customer']['address2'] : '';
    $data[ORDER_TEL] = isset($entry_data['customer']['tel']) ? $entry_data['customer']['tel'] : '';
    $data[ORDER_FAX] = isset($entry_data['customer']['fax']) ? $entry_data['customer']['fax'] : '';
    $data[ORDER_NOTE] = isset($entry_data['order']['note']) ? $entry_data['order']['note'] : '';
    $data[ORDER_DELIVERY_METHOD] = isset($entry_data['order']['delivery_method']) ? $entry_data['order']['delivery_method'] : -1;
    $data[ORDER_DELIVERY_NAME] = isset($entry_data['order']['delivery_name']) ? $entry_data['order']['delivery_name'] : '';
    $data[ORDER_DELIVERY_DATE] = isset($entry_data['order']['delivery_date']) ? $entry_data['order']['delivery_date'] : '';
    $data[ORDER_DELIVERY_TIME] = isset($entry_data['order']['delivery_time']) ? $entry_data['order']['delivery_time'] : '';
    $data[ORDER_DELIDUE_DATE] = isset($entry_data['order']['delidue_date']) ? $entry_data['order']['delidue_date'] : '';
    $data[ORDER_PAYMENT_METHOD] = isset($entry_data['order']['payment_method']) ? $entry_data['order']['payment_method'] : -1;
    $data[ORDER_PAYMENT_NAME] = isset($entry_data['order']['payment_name']) ? $entry_data['order']['payment_name'] : '';
    $data[ORDER_CONDITION] = serialize(wc2_get_condition());
    $data[ORDER_ITEM_TOTAL_PRICE] = isset($entry_data['order']['item_total_price']) ? $entry_data['order']['item_total_price'] : 0;
    $data[ORDER_GETPOINT] = isset($entry_data['order']['getpoint']) ? $entry_data['order']['getpoint'] : 0;
    $data[ORDER_USEDPOINT] = isset($entry_data['order']['usedpoint']) ? $entry_data['order']['usedpoint'] : 0;
    $data[ORDER_DISCOUNT] = isset($entry_data['order']['discount']) ? $entry_data['order']['discount'] : 0;
    $data[ORDER_SHIPPING_CHARGE] = isset($entry_data['order']['shipping_charge']) ? $entry_data['order']['shipping_charge'] : 0;
    $data[ORDER_COD_FEE] = isset($entry_data['order']['cod_fee']) ? $entry_data['order']['cod_fee'] : 0;
    $data[ORDER_TAX] = isset($entry_data['order']['tax']) ? $entry_data['order']['tax'] : 0;
    $data[ORDER_DATE] = $order_date;
    $data[ORDER_MODIFIED] = $order_modified;
    $data[ORDER_STATUS] = $order_status;
    $data[RECEIPT_STATUS] = $receipt_status;
    $data[RECEIPTED_DATE] = $receipted_date;
    $data[ORDER_TYPE] = $order_type;
    $data[ORDER_CHECK] = serialize($order_check);
    $cscs_keys = wc2_get_custom_field_keys(WC2_CSCS);
    if (!empty($cscs_keys) && is_array($cscs_keys)) {
        foreach ($cscs_keys as $key) {
            list($pfx, $cscs_key) = explode('_', $key, 2);
            if (array_key_exists(WC2_CUSTOM_CUSTOMER, $entry_data['customer']) and array_key_exists($cscs_key, $entry_data['customer'][WC2_CUSTOM_CUSTOMER])) {
                if (is_array($entry_data['customer'][WC2_CUSTOM_CUSTOMER][$cscs_key])) {
                    $data[WC2_CUSTOM_CUSTOMER][$cscs_key] = serialize($entry_data['customer'][WC2_CUSTOM_CUSTOMER][$cscs_key]);
                } else {
                    $data[WC2_CUSTOM_CUSTOMER][$cscs_key] = $entry_data['customer'][WC2_CUSTOM_CUSTOMER][$cscs_key];
                }
            } else {
                $data[WC2_CUSTOM_CUSTOMER][$cscs_key] = '';
            }
        }
    }
    $csod_keys = wc2_get_custom_field_keys(WC2_CSOD);
    if (!empty($csod_keys) && is_array($csod_keys)) {
        foreach ($csod_keys as $key) {
            list($pfx, $csod_key) = explode('_', $key, 2);
            if (array_key_exists(WC2_CUSTOM_ORDER, $entry_data['order']) and array_key_exists($csod_key, $entry_data['order'][WC2_CUSTOM_ORDER])) {
                if (is_array($entry_data['order'][WC2_CUSTOM_ORDER][$csod_key])) {
                    $data[WC2_CUSTOM_ORDER][$csod_key] = serialize($entry_data['order'][WC2_CUSTOM_ORDER][$csod_key]);
                } else {
                    $data[WC2_CUSTOM_ORDER][$csod_key] = $entry_data['order'][WC2_CUSTOM_ORDER][$csod_key];
                }
            } else {
                $data[WC2_CUSTOM_ORDER][$csod_key] = '';
            }
        }
    }
    $data[ORDER_CART] = array();
    ksort($cart);
    foreach ($cart as $idx => $row) {
        //$data[ORDER_CART][$row_index][ORDER_CART_GROUP_ID] = 0;
        $data[ORDER_CART][$idx][ORDER_CART_ROW_INDEX] = $idx;
        $data[ORDER_CART][$idx][ORDER_CART_POST_ID] = $row['post_id'];
        $data[ORDER_CART][$idx][ORDER_CART_ITEM_ID] = $row['item_id'];
        $data[ORDER_CART][$idx][ORDER_CART_ITEM_CODE] = $row['item_code'];
        $data[ORDER_CART][$idx][ORDER_CART_ITEM_NAME] = $row['item_name'];
        $data[ORDER_CART][$idx][ORDER_CART_SKU_ID] = $row['sku_id'];
        $data[ORDER_CART][$idx][ORDER_CART_SKU_CODE] = $row['sku_code'];
        $data[ORDER_CART][$idx][ORDER_CART_SKU_NAME] = $row['sku_name'];
        $data[ORDER_CART][$idx][ORDER_CART_PRICE] = $row['price'];
        $data[ORDER_CART][$idx][ORDER_CART_CPRICE] = $row['cprice'];
        $data[ORDER_CART][$idx][ORDER_CART_QUANTITY] = $row['quantity'];
        $data[ORDER_CART][$idx][ORDER_CART_UNIT] = $row['unit'];
        $data[ORDER_CART][$idx][ORDER_CART_TAX] = $row['tax'];
        //$data[ORDER_CART][$idx][ORDER_CART_DESTINATION_ID] = 0;
        $data[ORDER_CART][$idx][ORDER_CART_META_TYPE] = maybe_unserialize($row['meta_type']);
        $data[ORDER_CART][$idx][ORDER_CART_META_KEY] = maybe_unserialize($row['meta_key']);
    }
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_ROW_INDEX] = 0;
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_NAME1] = isset($entry_data['delivery']['name1']) ? $entry_data['delivery']['name1'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_NAME2] = isset($entry_data['delivery']['name2']) ? $entry_data['delivery']['name2'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_NAME3] = isset($entry_data['delivery']['name3']) ? $entry_data['delivery']['name3'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_NAME4] = isset($entry_data['delivery']['name4']) ? $entry_data['delivery']['name4'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_COUNTRY] = isset($entry_data['delivery']['country']) ? $entry_data['delivery']['country'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_ZIPCODE] = isset($entry_data['delivery']['zipcode']) ? $entry_data['delivery']['zipcode'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_PREF] = isset($entry_data['delivery']['pref']) ? $entry_data['delivery']['pref'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_ADDRESS1] = isset($entry_data['delivery']['address1']) ? $entry_data['delivery']['address1'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_ADDRESS2] = isset($entry_data['delivery']['address2']) ? $entry_data['delivery']['address2'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_TEL] = isset($entry_data['delivery']['tel']) ? $entry_data['delivery']['tel'] : '';
    $data[ORDER_DELIVERY][0][ORDER_DELIVERY_FAX] = isset($entry_data['delivery']['fax']) ? $entry_data['delivery']['fax'] : '';
    $csde_keys = wc2_get_custom_field_keys(WC2_CSDE);
    if (!empty($csde_keys) && is_array($csde_keys)) {
        foreach ($csde_keys as $key) {
            list($pfx, $csde_key) = explode('_', $key, 2);
            if (array_key_exists(WC2_CUSTOM_DELIVERY, $entry_data['delivery']) and array_key_exists($csde_key, $entry_data['delivery'][WC2_CUSTOM_DELIVERY])) {
                if (is_array($entry_data['delivery'][WC2_CUSTOM_DELIVERY][$csde_key])) {
                    $data[ORDER_DELIVERY][0][WC2_CUSTOM_DELIVERY][$csde_key] = serialize($entry_data['delivery'][WC2_CUSTOM_DELIVERY][$csde_key]);
                } else {
                    $data[ORDER_DELIVERY][0][WC2_CUSTOM_DELIVERY][$csde_key] = $entry_data['delivery'][WC2_CUSTOM_DELIVERY][$csde_key];
                }
            } else {
                $data[ORDER_DELIVERY][0][WC2_CUSTOM_DELIVERY][$csde_key] = '';
            }
        }
    }
    //wc2_log(print_r($data,true),"test.log");
    $data = apply_filters('wc2_filter_register_order_entry_data', $data, $args);
    $wc2_order->set_order_data($data);
    $res = $wc2_order->add_order_data();
    if (!$res) {
        wc2_set_log('Order data registration error.', 'register_orderdata');
        return false;
    }
    $order_id = $wc2_order->get_the_order_id();
    if ($entry_data['member_id'] && wc2_is_membersystem_state() && wc2_is_membersystem_point()) {
        $wc2_order->point_processing($order_id, $entry_data['member_id'], $entry_data['order']['payment_method'], $entry_data['order']['getpoint'], $entry_data['order']['usedpoint'], $receipt_status);
    }
    $args['order_id'] = $order_id;
    wc2_set_dec_order_id($args);
    do_action('wc2_action_register_order_data', $args, $data);
    return $order_id;
}
Esempio n. 2
0
 public function admin_order_page()
 {
     if (!isset($this->plugin_screen_hook_suffix)) {
         return;
     }
     $screen = get_current_screen();
     if ($this->plugin_screen_hook_suffix != $screen->id) {
         return;
     }
     if (isset($_REQUEST['action'])) {
         $this->mode = $_REQUEST['action'];
     } else {
         $this->mode = 'list';
     }
     $wc2_order = WC2_DB_Order::get_instance();
     switch ($this->mode) {
         case 'new':
             $title = '新規' . $this->title . '登録';
             $order_id = '';
             $dec_order_id = '';
             $data = $this->get_post_data();
             $data['ID'] = '';
             $data['dec_order_id'] = '--------------';
             $cart = array();
             $cart_row = 1;
             $item_total_price = 0;
             $order_date = wc2_get_today();
             $order_action = 'register';
             $this->page = 'order-post';
             break;
         case 'edit':
             $title = $this->title . '編集';
             if (isset($_REQUEST['order_action']) and 'register' == $_REQUEST['order_action']) {
                 check_admin_referer('wc2_order_post', 'wc2_nonce');
                 $data = $this->get_post_data();
                 if ($this->check_order_data($data)) {
                     $data = apply_filters('wc2_filter_admin_order_register_order_data', $data);
                     do_action('wc2_action_admin_order_register_pre');
                     $wc2_order->set_order_data($data);
                     $res = $wc2_order->add_order_data();
                     if (1 == $res) {
                         $order_id = $wc2_order->get_the_order_id();
                         $args = array('data' => $data, 'order_id' => $order_id);
                         wc2_set_dec_order_id($args);
                         $this->action_status = 'success';
                         $this->action_message = __('登録しました', 'wc2');
                     } else {
                         $this->action_status = 'error';
                         $this->action_message = __('登録に失敗しました', 'wc2');
                     }
                 } else {
                     $this->action_status = 'error';
                     $this->action_message = __('データに不備があります', 'wc2');
                 }
             } elseif (isset($_REQUEST['order_action']) and 'update' == $_REQUEST['order_action']) {
                 check_admin_referer('wc2_order_post', 'wc2_nonce');
                 $order_id = isset($_REQUEST['order_id']) ? $_REQUEST['order_id'] : '';
                 $data = $this->get_post_data();
                 if ($this->check_order_data($data)) {
                     $data = apply_filters('wc2_filter_admin_order_update_order_data', $data);
                     do_action('wc2_action_admin_order_update_pre');
                     $wc2_order->set_order_id($order_id);
                     $wc2_order->set_order_data($data);
                     $res = $wc2_order->update_order_data();
                     if (1 == $res) {
                         $this->action_status = 'success';
                         $this->action_message = __('Updated!');
                     } elseif (0 === $res) {
                         $this->action_status = 'none';
                         $this->action_message = '';
                     } else {
                         $this->action_status = 'error';
                         $this->action_message = __('Update Failed');
                     }
                 } else {
                     $this->action_status = 'error';
                     $this->action_message = __('データに不備があります', 'wc2');
                 }
             } else {
                 $order_id = isset($_REQUEST['target']) ? $_REQUEST['target'] : '';
             }
             $data = wc2_get_order_data($order_id);
             $dec_order_id = isset($data['dec_order_id']) ? $data['dec_order_id'] : '';
             $cart = !empty($data['cart']) ? $data['cart'] : array();
             $cart_row = 0 < count($cart) ? max(array_keys($cart)) + 1 : 1;
             $item_total_price = wc2_get_item_total_price($cart);
             $order_date_time = explode(" ", $data[ORDER_DATE]);
             $order_date = explode("-", $order_date_time[0]);
             $order_action = 'update';
             $this->page = 'order-post';
             break;
             //*** LI CUSTOMIZE >>>
         //*** LI CUSTOMIZE >>>
         case 'edit-mode':
             $title = $this->title . '編集';
             $order_id = isset($_REQUEST['order_id']) ? $_REQUEST['order_id'] : '';
             $dec_order_id = isset($_REQUEST['dec_order_id']) ? $_REQUEST['dec_order_id'] : '';
             $data = $this->get_post_data();
             $cart = !empty($data['cart']) ? $data['cart'] : array();
             $cart_row = 0 < count($cart) ? max(array_keys($cart)) + 1 : 1;
             $item_total_price = wc2_get_item_total_price($cart);
             $order_date_time = explode(" ", $data[ORDER_DATE]);
             $order_date = explode("-", $order_date_time[0]);
             $order_action = 'update';
             $this->page = 'order-post';
             $this->mode = 'edit';
             break;
             //*** LI CUSTOMIZE <<<
         //*** LI CUSTOMIZE <<<
         case 'delete':
             check_admin_referer('wc2_order_list', 'wc2_nonce');
             if (isset($_REQUEST['target']) && !empty($_REQUEST['target'])) {
                 $res = self::delete_order_data($_REQUEST['target']);
             }
             $this->page = 'order-list';
             break;
         case 'delete_batch':
             check_admin_referer('wc2_order_list', 'wc2_nonce');
             if (isset($_REQUEST['order_tag']) && !empty($_REQUEST['order_tag'])) {
                 $res = self::delete_batch_order_data($_REQUEST['order_tag']);
             }
             $this->page = 'order-list';
             break;
         case 'dl_orderdetail_list':
             check_admin_referer('wc2_dl_orderdetail_list', 'wc2_nonce');
             $this->download_order_detail_list();
             $this->page = '';
             break;
         case 'dl_order_list':
             check_admin_referer('wc2_dl_order_list', 'wc2_nonce');
             $this->download_order_list();
             $this->page = '';
             break;
         case 'list':
         default:
             $this->page = 'order-list';
             break;
     }
     do_action('wc2_action_admin_order_page', array($this));
     $order_status = wc2_get_option('management_status');
     $receipt_status = wc2_get_option('receipt_status');
     $order_type = wc2_get_option('order_type');
     //受注リスト
     if ($this->page == 'order-list') {
         $order_list = new WC2_Order_List_Table();
         $order_list->prepare_items();
         $order_refine_period = wc2_get_option('order_refine_period');
         $search_period = isset($_SESSION[WC2][$this->page]['search_period']) ? $_SESSION[WC2][$this->page]['search_period'] : 3;
         $startdate = isset($_SESSION[WC2][$this->page]['startdate']) ? $_SESSION[WC2][$this->page]['startdate'] : '';
         $enddate = isset($_SESSION[WC2][$this->page]['enddate']) ? $_SESSION[WC2][$this->page]['enddate'] : '';
         $search_column_key = isset($_REQUEST['search_column']) ? $_REQUEST['search_column'] : '';
         $search_word = '';
         $search_word_key = '';
         switch ($search_column_key) {
             case 'none':
                 break;
             case 'order_status':
                 $search_word_key = isset($_REQUEST['search_word']['order_status']) ? $_REQUEST['search_word']['order_status'] : '';
                 if (array_key_exists($search_word_key, $order_status)) {
                     $search_word = $order_status[$search_word_key];
                 }
                 break;
             case 'receipt_status':
                 $search_word_key = isset($_REQUEST['search_word']['receipt_status']) ? $_REQUEST['search_word']['receipt_status'] : '';
                 if (array_key_exists($search_word_key, $receipt_status)) {
                     $search_word = $receipt_status[$search_word_key];
                 }
                 break;
             case 'order_type':
                 $search_word_key = isset($_REQUEST['search_word']['order_type']) ? $_REQUEST['search_word']['order_type'] : '';
                 if (array_key_exists($search_word_key, $order_type)) {
                     $search_word = $order_type[$search_word_key];
                 }
                 break;
             default:
                 if (isset($_REQUEST['search_word']['keyword'])) {
                     $search_word = $_REQUEST['search_word']['keyword'];
                 }
         }
         $search_columns = $order_list->define_columns();
         unset($search_columns['cb']);
         unset($search_columns['total_price']);
         $search_columns['item_code'] = __('Item code', 'wc2');
         $search_columns['item_name'] = __('Item name', 'wc2');
         $search_columns = apply_filters('wc2_filter_admin_order_list_search_columns', $search_columns);
         $opt_order = wc2_get_option('opt_order');
         $chk_order = !empty($opt_order['chk_order']) ? $opt_order['chk_order'] : array();
         $chk_detail = !empty($opt_order['chk_detail']) ? $opt_order['chk_detail'] : array();
         $system_options = wc2_get_option('system');
         $applyform = wc2_get_apply_addressform($system_options['addressform']);
         //受注編集画面
     } elseif ($this->page == 'order-post') {
         $status = $this->action_status;
         $message = $this->action_message;
         $general_options = wc2_get_option('general');
         $payment_method = wc2_get_option('payment_method');
         $delivery_options = wc2_get_option('delivery');
         $delivery_method = isset($delivery_options['delivery_method']) ? $delivery_options['delivery_method'] : array();
         $delivery_after_days = apply_filters('wc2_filter_delivery_after_days', !empty($delivery_options['delivery_after_days']) ? (int) $delivery_options['delivery_after_days'] : 100);
         $order_condition = maybe_unserialize($data[ORDER_CONDITION]);
         $order_check = maybe_unserialize($data[ORDER_CHECK]);
     }
     $order_page = apply_filters('wc2_filter_admin_order_page', WC2_PLUGIN_DIR . '/admin/views/' . $this->page . '.php');
     require_once $order_page;
 }