提交 64637acb 编写于 作者: T Terry

shipping method部分加入国家,重量,以及csv表格里面的限制,不可用的shipping method不显示

上级 f84e6e27
......@@ -31,9 +31,7 @@ class Index
public function getLastData()
{
//echo 1;exit;
$cartInfo = Yii::$service->cart->getCartInfo();
if (!isset($cartInfo['products']) || !is_array($cartInfo['products']) || empty($cartInfo['products'])) {
return Yii::$service->url->redirectByUrlKey('checkout/cart');
}
......@@ -333,37 +331,33 @@ class Index
/**
* @property $current_shipping_method | String 当前选择的货运方式
* @return Array,数据格式为:
* [
* 'method'=> $method,
* 'label' => $label,
* 'name' => $name,
* 'cost' => $symbol.$currentCurrencyCost,
* 'check' => $check,
* 'shipping_i' => $shipping_i,
* ]
* 根据选择的货运方式,得到费用等信息
* [
* 'method'=> $method,
* 'label' => $label,
* 'name' => $name,
* 'cost' => $symbol.$currentCurrencyCost,
* 'check' => $check,
* 'shipping_i' => $shipping_i,
* ]
* 得到所有的,有效shipping method数组
*/
public function getShippings($custom_shipping_method = '')
{
$country = $this->_country;
if (!$this->_state) {
$region = '*';
$region = '';
} else {
$region = $this->_state;
}
$cartProductInfo = Yii::$service->cart->quoteItem->getCartProductInfo();
//echo $country ;
$product_weight = $cartProductInfo['product_weight'];
// 传递当前的货运方式,这个需要从cart中选取,
// 如果cart中没有shipping_method,那么该值为空
//var_dump($this->_cart_info);
$cartShippingMethod = $this->_cart_info['shipping_method'];
//echo "$custom_shipping_method,$cartShippingMethod";
$current_shipping_method = Yii::$service->shipping->getCurrentShippingMethod($custom_shipping_method, $cartShippingMethod);
// 当前的货运方式
$current_shipping_method = Yii::$service->shipping->getCurrentShippingMethod($custom_shipping_method, $cartShippingMethod, $country, $region, $product_weight);
$this->_shipping_method = $current_shipping_method;
// 得到所有,有效的shipping method
$shippingArr = $this->getShippingArr($product_weight, $current_shipping_method, $country, $region);
return $shippingArr;
}
......@@ -420,22 +414,18 @@ class Index
* @property $country | String 国家
* @return array , 通过上面的三个参数,得到各个运费方式对应的运费等信息。
*/
public function getShippingArr($weight, $current_shipping_method, $country, $region = '*')
public function getShippingArr($weight, $current_shipping_method, $country, $region)
{
$allshipping = Yii::$service->shipping->getActiveShippingMethods($country,$region);
$available_shipping = Yii::$service->shipping->getAvailableShippingMethods($country, $region, $weight);
$sr = '';
$shipping_i = 1;
$arr = [];
if (is_array($allshipping) && !empty($allshipping)) {
foreach ($allshipping as $method=>$shipping) {
if (is_array($available_shipping) && !empty($available_shipping)) {
foreach ($available_shipping as $method=>$shipping) {
$label = $shipping['label'];
$name = $shipping['name'];
// 得到运费的金额
//echo "$method,$weight,$country,$region";
// getShippingCostWithSymbols
$cost = Yii::$service->shipping->getShippingCost($method, $weight, $country, $region);
//var_dump($cost);
//echo "##"
$cost = Yii::$service->shipping->getShippingCost($method, $shipping, $weight, $country, $region);
$currentCurrencyCost = $cost['currCost'];
$symbol = Yii::$service->page->currency->getCurrentSymbol();
if ($current_shipping_method == $method) {
......@@ -456,7 +446,6 @@ class Index
$shipping_i++;
}
}
return $arr;
}
......@@ -531,9 +520,11 @@ class Index
*/
$quoteItem = Yii::$service->cart->quoteItem->getCartProductInfo();
$product_weight = $quoteItem['product_weight'];
$shippingCost = Yii::$service->shipping->getShippingCost($shipping_method, $product_weight, $country, $state);
// 计算运费。
$avaiable_method = Yii::$service->shipping->getAvailableShippingMethods($country,$region,$product_weight);
$shippingInfo = $avaiable_method[$shipping_method];
$shippingCost = Yii::$service->shipping->getShippingCost($shipping_method, $shippingInfo, $product_weight, $country, $state);
Yii::$service->cart->quote->setShippingCost($shippingCost);
/**
* 下面通过当前的货币,购物车信息等数组数据,+上view文件
* 返回order部分的html内容。
......
......@@ -268,11 +268,11 @@ class Placeorder
return false;
} else {
if (!Yii::$service->shipping->ifIsCorrect($shipping_method)) {
Yii::$service->helper->errors->add('shipping method is not correct');
return false;
}
//if (!Yii::$service->shipping->ifIsCorrect($shipping_method)) {
// Yii::$service->helper->errors->add('shipping method is not correct');
//
// return false;
//}
}
// 验证支付方式
if (!$payment_method) {
......
此差异已折叠。
......@@ -243,9 +243,9 @@ class Quote extends Service
}
$myCart->remote_ip = \fec\helpers\CFunc::get_real_ip();
$myCart->app_name = Yii::$service->helper->getAppName();
if ($defaultShippingMethod = Yii::$service->shipping->getDefaultShippingMethod()) {
$myCart->shipping_method = $defaultShippingMethod;
}
//if ($defaultShippingMethod = Yii::$service->shipping->getDefaultShippingMethod()) {
// $myCart->shipping_method = $defaultShippingMethod;
//}
$myCart->save();
$cart_id = $myCart['cart_id'];
$this->setCartId($cart_id);
......@@ -338,12 +338,7 @@ class Quote extends Service
if ($items_qty <= 0) {
return false;
}
//var_dump($cart);
//echo "########".$cart['shipping_method'];
$coupon_code = $cart['coupon_code'];
if (!$shipping_method) {
$shipping_method = $cart['shipping_method'];
}
$cart_product_info = Yii::$service->cart->quoteItem->getCartProductInfo();
if (is_array($cart_product_info)) {
$product_weight = $cart_product_info['product_weight'];
......@@ -351,10 +346,13 @@ class Quote extends Service
$products = $cart_product_info['products'];
$product_total = $cart_product_info['product_total'];
$base_product_total = $cart_product_info['base_product_total'];
//if (!$shipping_method) {
// $shipping_method = Yii::$service->shipping->getDefaultShippingMethod($country,$region,$product_weight);
//}
if ($products && $product_total) {
$currShippingCost = 0;
$baseShippingCost = 0;
if ($shipping_method && $product_weight && $country) {
if ($shipping_method && $product_weight) {
$shippingCost = $this->getShippingCost($shipping_method, $product_weight, $country, $region);
$currShippingCost = $shippingCost['currCost'];
$baseShippingCost = $shippingCost['baseCost'];
......@@ -420,11 +418,11 @@ class Quote extends Service
*/
public function getShippingCost($shipping_method = '', $weight = '', $country = '', $region = '')
{
if (!$region) {
$region = '*';
}
if (!$this->_shipping_cost) {
$shippingCost = Yii::$service->shipping->getShippingCost($shipping_method, $weight, $country, $region);
$available_method = Yii::$service->shipping->getAvailableShippingMethods($country,$region,$weight);
$shippingInfo = $available_method[$shipping_method];
$shippingCost = Yii::$service->shipping->getShippingCost($shipping_method, $shippingInfo, $weight, $country, $region);
$this->_shipping_cost = $shippingCost;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册