示例#1
0
	/**
	 * 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;
	}
示例#2
0
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);
    //--------------------------------------------------------------------------
}