dever 3 years ago
parent
commit
21f23698e8
4 changed files with 96 additions and 44 deletions
  1. 10 12
      app/mshop/lib/Buy.php
  2. 4 2
      app/mshop/lib/Core.php
  3. 55 0
      app/store/lib/Goods.php
  4. 27 30
      app/store/lib/Order.php

+ 10 - 12
app/mshop/lib/Buy.php

@@ -578,7 +578,7 @@ class Buy
     }
 
     # 采购订单审核 拆单
-    public function audit()
+    public function audit_commit()
     {
         $order_id = Dever::input('order_id');
         $info = Dever::db('shop/buy_order')->find($order_id);
@@ -626,30 +626,28 @@ class Buy
         print_r($factory);die;
 
         $num = 0;
+        $order = array();
         foreach ($goods as $k => $v) {
             # 开始找仓库
-            $find = $this->store($order_id, $shop, $store, $v);
+            $find = $this->store($order_id . '_' . $num, $shop, $store, $v);
             if (!$find[1]) {
                 # 仓库没有,找厂家
                 if ($factory) {
-                    $find = $this->factory($order_id, $shop, $factory, $v);
-                }
-                
-                if (!$find[1]) {
-                    # 啥都没找到怎么办?
+                    $find = $this->factory($order_id . '_' . $num, $shop, $factory, $v);
                 }
             }
 
             if ($find[1]) {
                 $num++;
-                Dever::db('shop/buy_order_goods')->update(array('where_id' => $v['id'], 'status' => 2, 'type' => $find[0], 'type_id' => implode(',', $find[1])));
             }
         }
 
         if ($num > 0) {
-            Dever::db('shop/buy_order')->update(array('where_id' => $info['id'], 'status' => 3));
+            Dever::db('shop/buy_order')->update(array('where_id' => $info['id'], 'state' => 2));
         } else {
-            Dever::db('shop/buy_order')->update(array('where_id' => $info['id'], 'status' => 7));
+            # 没有找到,退款
+            Dever::db('shop/buy_order')->update(array('where_id' => $info['id'], 'status' => 8));
+            Dever::load('shop/lib/refund')->set('buy')->action($order_id, 2, false);
         }
     }
 
@@ -669,7 +667,7 @@ class Buy
             if ($sku) {
                 if ($goods['num'] <= $sku['total']) {
                     # 如果库存符合,直接下单即可,生成仓库订单
-                    $state = Dever::load('store/lib/order')->pay($order_id, $shop['id'], $where['store_id'], $goods['price'], $goods['num'], $where['goods_id'], $where['sku_id']);
+                    $state = Dever::load('store/lib/order')->pay($order_id, $shop, $where['store_id'], $goods['price'], $goods['num'], $where['goods_id'], $where['sku_id']);
                     if ($state) {
                         $id[] = $where['store_id'];
                         break;
@@ -678,7 +676,7 @@ class Buy
                     # 如果库存不够,从这个仓库扣下一部分,剩余的从另外仓库处理
                     $goods['num'] = $goods['num'] - $sku['total'];
                     # 生成仓库订单
-                    $state = Dever::load('store/lib/order')->pay($order_id, $shop['id'], $where['store_id'], $goods['price'], $sku['total'], $where['goods_id'], $where['sku_id']);
+                    $state = Dever::load('store/lib/order')->pay($order_id, $shop, $where['store_id'], $goods['price'], $sku['total'], $where['goods_id'], $where['sku_id']);
                     if (!$state) {
                         $goods['num'] = $goods['num'] + $sku['total'];
                     } else {

+ 4 - 2
app/mshop/lib/Core.php

@@ -25,8 +25,10 @@ class Core
             Dever::alert('请选择门店');
         }
 
-        if ($this->shop_id != $this->user['shop_id']) {
-            Dever::alert('请选择门店');
+        $shop = Dever::db('shop/member')->find(array('mobile' => $this->user['mobile'], 'shop_id' => $this->shop_id));
+
+        if (!$shop) {
+            Dever::alert('您没有权限管理该门店');
         }
 
         $this->shop = Dever::db('shop/info')->getOne($this->shop_id);

+ 55 - 0
app/store/lib/Goods.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace Store\Lib;
+
+use Dever;
+
+class Goods
+{
+    # 处理库存操作 1是增加,2是减少 1是总库存,2是销量
+    public function oper($type, $col, $data)
+    {
+        if (!$data) {
+            return;
+        }
+        if ($type == 1) {
+            $method = 'inc';
+            $otherMethod = 'dec';
+        } else {
+            $method = 'dec';
+            $otherMethod = 'inc';
+        }
+
+        if ($col == 1) {
+            $method .= 'Total';
+            $otherMethod .= 'Total';
+            $num = 'total_num';
+        } else {
+            $method .= 'Sell';
+            $otherMethod .= 'Sell';
+            $num = 'sell_num';
+        }
+
+        foreach ($data as $k => $v) {
+            if (!$v['sku_id']) {
+                $v['sku_id'] = -1;
+            }
+
+            $up = array();
+            $up['where_store_id'] = $v['store_id'];
+            $up['where_goods_id'] = $v['goods_id'];
+            $up[$num] = $v['num'];
+            $state = Dever::db('store/goods')->$method($up);
+            if ($state) {
+                $upSku = $up;
+                $upSku['where_sku_id'] = $v['sku_id'];
+                $state = Dever::db('store/goods_sku')->$method($upSku);
+                if (!$state) {
+                    Dever::db('store/goods')->$otherMethod($up);
+                }
+            }
+        }
+
+        return $state;
+    }
+}

+ 27 - 30
app/store/lib/Order.php

@@ -7,7 +7,7 @@ use Dever;
 class Order
 {
 	# 单个商品下单
-	public function pay($shop_order_id, $shop_id, $store_id, $price, $num, $goods_id, $sku_id)
+	public function pay($shop_order_id, $shop, $store_id, $price, $num, $goods_id, $sku_id)
 	{
 		# 先更新库存
 		$state = $this->updateSell($store_id, $goods_id, $sku_id, $num);
@@ -16,36 +16,45 @@ class Order
 			return false;
 		}
 
-		$where['shop_order_id'] = $shop_order_id;
-		$where['shop_id'] = $shop_id;
-		$where['store_id'] = $store_id;
-		$info = Dever::db('store/order')->find($where);
+		$where['order_num'] = $shop_order_id;
+		$where['shop_id'] = $shop['id'];
+		$where['type'] = 1;
+		$where['type_id'] = $store_id;
+		$info = Dever::db('shop/buy_order')->find($where);
 
 		if (!$info) {
 			$data = $where;
+			$data['name'] = $shop_order_id;
+			$data['mobile'] = $shop['mobile'];
+			$data['area'] = $shop['area'];
+			$data['province'] = $shop['province'];
+			$data['city'] = $shop['city'];
+			$data['county'] = $shop['county'];
+			$data['town'] = $shop['town'];
+			$data['operdate'] = time();
+			$data['status'] = 3;
 			$data['price'] = $price;
 			$data['num'] = $num;
-			$id = $state = Dever::db('store/order')->insert($where);
+			$id = $state = Dever::db('shop/buy_order')->insert($where);
 		} else {
 			$id = $info['id'];
 
 			$data['where_id'] = $id;
 			$data['price'] = $info['price'] + $price;
 			$data['num'] = $info['num'] + $num;
-			$state = Dever::db('store/order')->update($data);
+			$state = Dever::db('shop/buy_order')->update($data);
 		}
 
 		if ($state && $id > 0) {
-			$goods_info = Dever::db('store/order_goods')->find(array('order_id' => $id));
+			$goods_info = Dever::db('shop/buy_order_goods')->find(array('order_id' => $id));
 			if (!$goods_info) {
-				$goods['shop_order_id'] = $shop_order_id;
+				$goods['order_id'] = $id;
 				$goods['shop_id'] = $shop_id;
-				$goods['store_id'] = $store_id;
-				$goods['price'] = $price;
-				$goods['num'] = $num;
 				$goods['goods_id'] = $goods_id;
 				$goods['sku_id'] = $sku_id;
-				Dever::db('store/order_goods')->insert($goods);
+				$goods['price'] = $price;
+				$goods['num'] = $num;
+				Dever::db('shop/buy_order_goods')->insert($goods);
 			}
 
 			return true;
@@ -57,23 +66,11 @@ class Order
 	# 减少库存,增加销量
     public function updateSell($store_id, $goods_id, $sku_id, $num)
     {
-        $up = array();
-        $up['where_store_id'] = $store_id;
-        $up['where_goods_id'] = $goods_id;
-        $up['sell_num'] = $order['num'];
-        $state = Dever::db('store/goods')->updateSell($up);
-
-        if ($state) {
-        	if ($sku_id > 0) {
-	            
-	        } else {
-	            $sku_id = -1;
-	        }
-	        $upSku = $up;
-	        $upSku['where_sku_id'] = $v['sku_id'];
-	        $state = Dever::db('store/goods_sku')->updateSell($upSku);
-        }
 
-        return $state;
+    	$data['store_id'] = $store_id;
+    	$data['goods_id'] = $goods_id;
+    	$data['sku_id'] = $sku_id;
+    	$data['num'] = $num;
+    	return Dever::load('shop/lib/goods')->oper(1, 2, $data);
     }
 }