dever 3 jaren geleden
bovenliggende
commit
f1d589aee7
3 gewijzigde bestanden met toevoegingen van 33 en 3 verwijderingen
  1. 10 0
      app/shop/database/buy_order_refund.php
  2. 10 0
      app/shop/database/sell_order_refund.php
  3. 13 3
      app/shop/lib/Refund.php

+ 10 - 0
app/shop/database/buy_order_refund.php

@@ -100,6 +100,16 @@ return array
             'update'    => 'text',
         ),
 
+        're_cash'      => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => '恢复的礼品卡或者钱包金额',
+            'default'   => '',
+            'desc'      => '恢复的礼品卡或者钱包金额',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
         'num'        => array
         (
             'type'      => 'int-11',

+ 10 - 0
app/shop/database/sell_order_refund.php

@@ -72,6 +72,16 @@ return array
             'update'    => 'text',
         ),
 
+        're_cash'      => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => '恢复的礼品卡或者钱包金额',
+            'default'   => '',
+            'desc'      => '恢复的礼品卡或者钱包金额',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
         'num'        => array
         (
             'type'      => 'int-11',

+ 13 - 3
app/shop/lib/Refund.php

@@ -69,7 +69,7 @@ class Refund
     }
 
     # 更新退款记录
-    public function up($order_id, $order_goods_id, $status, $price, $p_price, $num = false, $desc = '', $pic = '', $process = 1, $order = array())
+    public function up($order_id, $order_goods_id, $status, $price, $p_price, $num = false, $desc = '', $pic = '', $process = 1, $order = array(), $re_cash = 0)
     {
         $data['order_id'] = $order_id;
         if (!$order_goods_id) {
@@ -90,6 +90,7 @@ class Refund
         if ($p_price) {
             $data['p_cash'] = $p_price;
         }
+        $data['re_cash'] = $re_cash;
         
         if ($num) {
             $data['num'] = $num;
@@ -143,12 +144,13 @@ class Refund
             }
         }
         if ($auth) {
+            $re_cash = 0;
             if ($order_goods_id) {
                 $info = Dever::db($this->goods_table)->find(array('id' => $order_goods_id, 'order_id' => $data['id'], 'status' => 1));
                 if ($info) {
 
                     Dever::db($this->goods_table)->update(array('where_id' => $info['id'], 'status' => 2));
-                    
+
                     if (!$num) {
                         $num = $info['num'];   
                     }
@@ -159,6 +161,7 @@ class Refund
                         if ($info['total_price'] >= $kou) {
                             $info['total_price'] = $info['total_price'] - $kou;
                         } else {
+                            $re_cash = $info['total_price'];
                             $info['total_price'] = 0;
                         }
                     }
@@ -202,7 +205,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, $data);
+                $log = $this->up($data['id'], $order_goods_id, $status, $cash, $p_cash, $num, $desc, $pic, $process, $data, $re_cash);
 
                 if (!$log) {
                     Dever::alert('退款失败');
@@ -413,8 +416,15 @@ class Refund
                         Dever::db('shop/user_coupon')->update(array('where_id' => $order['user_coupon_id'], 'status' => 1));
                     }
 
+                    $re_cash = $info['re_cash'];
                     if (isset($order['card_code_id']) && $order['card_code_id'] && $order['card_code_cash'] > 0) {
                         # 还原礼品卡
+                        if ($re_cash > 0) {
+                            $card_code_cash = $order['card_code_cash'] - $re_cash;
+                            $order['card_code_cash'] = $re_cash;
+
+                            Dever::db($this->order_table)->update(array('where_id' => $order['id'], 'card_code_cash' => $card_code_cash));
+                        }
                         Dever::db('card/code')->decUseCash(array('where_id' => $order['card_code_id'], 'set_use_cash' => $order['card_code_cash']));
                     } elseif (isset($order['wallet_cash']) && $order['wallet_cash'] && $order['wallet_cash'] > 0) {
                         # 还原钱包