function wc2_set_order_price($cart = array(), $entry_data = array()) { $general = wc2_get_option('general'); if (empty($cart) and !is_admin()) { $cart = wc2_get_cart(); } if (empty($entry_data) and !is_admin()) { $entry_data = wc2_get_entry(); } //*** Delivery method name $delivery_name = wc2_get_delivery_method_name($entry_data['order']['delivery_method']); wc2_set_entry_order_value('delivery_name', $delivery_name); //-------------------------------------------------------------------------- //*** Payment method name $payment = wc2_get_payment($entry_data['order']['payment_method']); $payment_name = $payment['name']; wc2_set_entry_order_value('payment_name', $payment_name); //-------------------------------------------------------------------------- //*** Item total price $item_total_price = wc2_get_item_total_price($cart); wc2_set_entry_order_value('item_total_price', $item_total_price); //-------------------------------------------------------------------------- //*** Discount price $discount = wc2_get_order_discount($general['display_mode'], $cart); wc2_set_entry_order_value('discount', $discount); //-------------------------------------------------------------------------- //*** Shipping charge if (empty($general['postage_privilege']) || $item_total_price + $discount < $general['postage_privilege']) { $country = isset($entry_data['delivery']['country']) && !empty($entry_data['delivery']['country']) ? $entry_data['delivery']['country'] : $entry_data['customer']['country']; $shipping_charge = wc2_get_shipping_charge($entry_data['order']['delivery_method'], $entry_data['delivery']['pref'], $country, $cart); } else { $shipping_charge = 0; } $shipping_charge = apply_filters('wc2_filter_set_shipping_charge', $shipping_charge, $cart, $entry_data); wc2_set_entry_order_value('shipping_charge', $shipping_charge); //-------------------------------------------------------------------------- //*** COD fee $usedpoint = isset($entry_data['order']['usedpoint']) ? (int) $entry_data['order']['usedpoint'] : 0; $amount_by_cod = $item_total_price + $discount + $shipping_charge - $usedpoint; $amount_by_cod = apply_filters('wc2_filter_set_amount_by_cod', $amount_by_cod, $entry_data, $item_total_price, $discount, $shipping_charge, $usedpoint); $cod_fee = wc2_get_cod_fee($entry_data['order']['payment_method'], $amount_by_cod, $item_total_price, $discount, $shipping_charge); $cod_fee = apply_filters('wc2_filter_set_cod_fee', $cod_fee, $entry_data, $item_total_price, $discount, $shipping_charge, $usedpoint); wc2_set_entry_order_value('cod_fee', $cod_fee); //-------------------------------------------------------------------------- //*** Set materials $materials = array('entry_data' => $entry_data, 'cart' => $cart, 'total_price' => $item_total_price, 'discount' => $discount, 'shipping_charge' => $shipping_charge, 'usedpoint' => $usedpoint, 'cod_fee' => $cod_fee, 'payment' => $payment); //-------------------------------------------------------------------------- //*** Tax price $tax = wc2_get_tax($materials); wc2_set_entry_order_value('tax', $tax); //-------------------------------------------------------------------------- //*** Total price $total_price = $item_total_price + $discount + $shipping_charge - $usedpoint + $cod_fee + ('exclude' == $general['tax_mode'] ? $tax : 0); $total_price = apply_filters('wc2_filter_set_total_order_price', $total_price, $item_total_price, $discount, $shipping_charge, $usedpoint, $cod_fee); wc2_set_entry_order_value('total_price', $total_price); //-------------------------------------------------------------------------- //*** Get point $member = wc2_get_member(); $getpoint = wc2_get_order_point($member['ID'], $usedpoint); wc2_set_entry_order_value('getpoint', $getpoint); //-------------------------------------------------------------------------- }
/** * Delivery input check * */ public function delivery_check() { $mes = array(); if( isset($_POST['delivery']['delivery_flag']) && $_POST['delivery']['delivery_flag'] == 1 ) { //氏名 if ( WC2_Utils::is_blank($_POST['delivery']['name1']) || WC2_Utils::is_blank($_POST['delivery']['name2']) ){ $mes[] = __('氏名を入力してください。', 'wc2'); } //郵便番号 if ( WC2_Utils::is_blank($_POST['delivery']['zipcode']) ){ $mes[] = __('郵便番号が入力されていません。', 'wc2'); }elseif( preg_match('/[^\d-]/', trim($_POST['delivery']['zipcode'])) ){ $mes[] = __('郵便番号は半角数字で入力してください。', 'wc2'); } //都道府県 if ( WC2_UNSELECTED == ($_POST['delivery']['pref']) ) $mes[] = __('都道府県が選択されていません。', 'wc2'); //市区町村・番地 if ( WC2_Utils::is_blank($_POST['delivery']['address1']) ) $mes[] = __('市区町村・番地が入力されていません。', 'wc2'); //電話番号 if( WC2_Utils::is_blank($_POST['delivery']['tel']) ){ $mes[] = __('電話番号が入力されていません。', 'wc2'); }elseif( !WC2_Utils::is_blank($_POST['delivery']['tel']) && preg_match('/[^\d]/', trim($_POST['delivery']['tel'])) ){ $mes[] = __('電話番号は半角数字で入力してください。', 'wc2'); } } if( !isset($_POST['offer']['delivery_method']) || (empty($_POST['offer']['delivery_method']) && !WC2_Utils::is_zero($_POST['offer']['delivery_method'])) ) $mes[] = __('配送方法を選択してください。', 'wc2'); if( !isset($_POST['offer']['payment_method']) ) { $mes[] = __('支払方法を選択してください。', 'wc2'); } else { $entry_data = wc2_get_entry(); $delivery = wc2_get_option( 'delivery' ); $general = wc2_get_option( 'general' ); $payment = wc2_get_payment( $_POST['offer']['payment_method'] ); if( 'COD' == $payment['settlement'] ) { $item_total_price = wc2_get_item_total_price(); $materials = array( 'total_price' => $item_total_price, 'discount' => $entry_data['order']['discount'], 'shipping_charge' => $entry_data['order']['shipping_charge'], 'cod_fee' => $entry_data['order']['cod_fee'], ); $item_total_price += wc2_get_tax( $materials ); $cod_limit_amount = ( isset($general['cod_limit_amount']) && 0 < (int)$general['cod_limit_amount'] ) ? $general['cod_limit_amount'] : 0; if( 0 < $cod_limit_amount && $item_total_price > $cod_limit_amount ) $mes[] = sprintf(__('商品合計金額が、代引きでご購入できる上限額(%s)を超えています。', 'wc2'), wc2_crform( $general['cod_limit_amount'], true, false )); } $d_method_index = wc2_get_delivery_method_index( (int)$_POST['offer']['delivery_method'] ); if( $delivery['delivery_method'][$d_method_index]['nocod'] == 1 ) { if('COD' == $payment['settlement']) $mes[] = __('この配送方法では、代引きはご利用できません。', 'wc2'); } $country = $entry_data['delivery']['country']; $local_country = wc2_get_base_country(); if( $country == $local_country ) { if( $delivery['delivery_method'][$d_method_index]['intl'] == 1 ) { $mes[] = __('配送方法が誤っています。国際便は指定できません。', 'wc2'); } } else { if( WC2_Utils::is_zero($delivery['delivery_method'][$d_method_index]['intl']) ) { $mes[] = __('配送方法が誤っています。国際便を指定してください。', 'wc2'); } } } //custom_delivery check $csde_mes = wc2_custom_field_enter_check('delivery'); foreach( $csde_mes as $csde_mes_val ){ $mes[] = $csde_mes_val; } //custom_order check $csod_mes = wc2_custom_field_enter_check('order'); foreach( $csod_mes as $csod_mes_val ){ $mes[] = $csod_mes_val; } $mes = apply_filters( 'wc2_filter_delivery_check', $mes ); return $mes; }
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; }