|
@@ -64,7 +64,7 @@ class Refund
|
|
|
}
|
|
|
|
|
|
# 更新退款记录
|
|
|
- public function up($order_id, $order_goods_id, $status, $price, $p_price, $num = false, $desc = '', $pic = '', $process = 1)
|
|
|
+ public function up($order_id, $order_goods_id, $status, $price, $p_price, $num = false, $desc = '', $pic = '', $process = 1, $order = array())
|
|
|
{
|
|
|
$data['order_id'] = $order_id;
|
|
|
if (!$order_goods_id) {
|
|
@@ -92,6 +92,10 @@ class Refund
|
|
|
$data['desc'] = $desc;
|
|
|
$data['pic'] = $pic;
|
|
|
$data['process'] = $process;
|
|
|
+ if ($order && isset($order['parent_type']) && $order['parent_type'] > 1) {
|
|
|
+ $data['parent_type'] = $order['parent_type'];
|
|
|
+ $data['parent_order_id'] = $order['parent_order_id'];
|
|
|
+ }
|
|
|
if ($info) {
|
|
|
$data['where_id'] = $info['id'];
|
|
|
$state = Dever::db($this->refund_table)->update($data);
|
|
@@ -179,7 +183,7 @@ class Refund
|
|
|
$cash = round($cash, 2);
|
|
|
|
|
|
if ($cash >= 0) {
|
|
|
- $log = $this->up($data['id'], $order_goods_id, $status, $cash, $p_cash, $num, $desc, $pic, $process);
|
|
|
+ $log = $this->up($data['id'], $order_goods_id, $status, $cash, $p_cash, $num, $desc, $pic, $process, $data);
|
|
|
|
|
|
if (!$log) {
|
|
|
Dever::alert('退款失败');
|
|
@@ -306,28 +310,30 @@ class Refund
|
|
|
$state = Dever::db($this->order_table)->update($update);
|
|
|
}
|
|
|
|
|
|
- if (isset($order['parent_type']) && $order['parent_type'] > 1 && isset($order['parent_order_id']) && $order['parent_order_id']) {
|
|
|
- # 把关联订单也退掉
|
|
|
- $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
|
|
|
- if ($goods_info) {
|
|
|
+ if ($buy_status != -1) {
|
|
|
+ if (isset($order['parent_type']) && $order['parent_type'] > 1 && isset($order['parent_order_id']) && $order['parent_order_id']) {
|
|
|
+ # 把关联订单也退掉
|
|
|
+ $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
|
|
|
+ if ($goods_info) {
|
|
|
|
|
|
- $sell_order_goods = Dever::db('shop/sell_order_goods')->find(array('order_id' => $order['parent_order_id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
|
|
|
- }
|
|
|
- } elseif (isset($order['shop_type']) && $order['shop_type'] == 2) {
|
|
|
- # 把关联订单也退掉
|
|
|
- $buy_order = Dever::db('shop/buy_order')->select(array('parent_type' => 2, 'parent_order_id' => $info['order_id']));
|
|
|
- $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
|
|
|
- if ($buy_order && $goods_info) {
|
|
|
- foreach ($buy_order as $k => $v) {
|
|
|
- $temp = Dever::db('shop/buy_order_goods')->find(array('order_id' => $v['id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
|
|
|
- if ($temp) {
|
|
|
- $temp['type'] = $v['type'];
|
|
|
- $temp['type_id'] = $v['type_id'];
|
|
|
- $buy_order_goods = $temp;
|
|
|
+ $sell_order_goods = Dever::db('shop/sell_order_goods')->find(array('order_id' => $order['parent_order_id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
|
|
|
+ }
|
|
|
+ } elseif (isset($order['shop_type']) && $order['shop_type'] == 2) {
|
|
|
+ # 把关联订单也退掉
|
|
|
+ $buy_order = Dever::db('shop/buy_order')->select(array('parent_type' => 2, 'parent_order_id' => $info['order_id']));
|
|
|
+ if ($buy_order) {
|
|
|
+ $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
|
|
|
+ foreach ($buy_order as $k => $v) {
|
|
|
+ $temp = Dever::db('shop/buy_order_goods')->find(array('order_id' => $v['id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
|
|
|
+ if ($temp) {
|
|
|
+ $temp['type'] = $v['type'];
|
|
|
+ $temp['type_id'] = $v['type_id'];
|
|
|
+ $buy_order_goods = $temp;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
$update['where_id'] = $order['id'];
|
|
@@ -368,17 +374,21 @@ class Refund
|
|
|
}
|
|
|
|
|
|
$data = Dever::db($this->goods_table)->getDataByIds(array('ids' => $info['order_goods_id']));
|
|
|
+
|
|
|
if ($this->type == 'sell' && $process == 2) {
|
|
|
# 如果是销售单,退款后要减少销量
|
|
|
Dever::load('shop/lib/goods')->oper($order, 2, 2, $data);
|
|
|
} elseif ($this->type == 'buy' && $process == 3 && ($order['status'] == 5 || $order['status'] == 6)) {
|
|
|
# 如果是采购单,退款后要恢复库存
|
|
|
Dever::load('shop/lib/goods')->oper($order, 1, 1, $data);
|
|
|
+ } elseif ($this->type == 'buy' && $process == 2 && $order['source_type'] == 2) {
|
|
|
+ # 如果是采购单,退款后要恢复库存
|
|
|
+ Dever::load('store/lib/goods')->oper($order['source_id'], 2, 2, $data);
|
|
|
}
|
|
|
if (isset($sell_order_goods) && $sell_order_goods) {
|
|
|
- Dever::load('shop/lib/refund')->set('sell')->apply(2, $sell_order_goods['shop_id'], $sell_order_goods['order_id'], $sell_order_goods['id'], 2, 0, '退货退款');
|
|
|
+ Dever::load('shop/lib/refund')->set('sell')->apply(2, $sell_order_goods['shop_id'], $sell_order_goods['order_id'], $sell_order_goods['id'], 2, 0, '退货退款', '', 2, -1);
|
|
|
} elseif (isset($buy_order_goods) && $buy_order_goods) {
|
|
|
- Dever::load('shop/lib/refund')->set('buy')->apply($buy_order_goods['type'], $buy_order_goods['type_id'], $buy_order_goods['order_id'], $buy_order_goods['id'], $buy_status, 0, $info['desc'], '', 2);
|
|
|
+ Dever::load('shop/lib/refund')->set('buy')->apply($buy_order_goods['type'], $buy_order_goods['type_id'], $buy_order_goods['order_id'], $buy_order_goods['id'], $buy_status, 0, $info['desc'], '', 2, -1);
|
|
|
}
|
|
|
|
|
|
return 'reload';
|
|
@@ -452,9 +462,11 @@ class Refund
|
|
|
$msg_param['name'] = $shop['name'];
|
|
|
$msg_param = Dever::json_encode($msg_param);
|
|
|
$msg = '您有一笔订单已退款,退款将在3个工作日内返回原支付账户';
|
|
|
- Dever::load('message/lib/data')->push(-1, $data['uid'], '退款成功通知', $msg, 2, 1, false, $msg_param);
|
|
|
+ if (Dever::project('message')) {
|
|
|
+ Dever::load('message/lib/data')->push(-1, $data['uid'], '退款成功通知', $msg, 2, 1, false, $msg_param);
|
|
|
+ }
|
|
|
|
|
|
- if (Dever::load('wechat_applet')) {
|
|
|
+ if (Dever::project('wechat_applet')) {
|
|
|
$config = Dever::db($this->order_table)->config;
|
|
|
$user = Dever::db('passport/wechat')->one(array('uid' => $data['uid'], 'system_id' => 1, 'system_source' => 5));
|
|
|
if ($user && $user['openid']) {
|