dever 3 years ago
parent
commit
71b4791459

+ 15 - 0
app/factory/database/goods.php

@@ -156,5 +156,20 @@ return array
             'order' => array('id' => 'desc'),
             'col' => '*|goods_id',
         ),
+
+        # 更新售出量
+        'incSell' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'factory_id' => 'yes',
+                'goods_id' => 'yes',
+            ),
+            'set' => array
+            (
+                'sell_num' => array('yes', '+='),
+            ),
+        ),
     ),
 );

+ 15 - 0
app/factory/database/goods_sku.php

@@ -126,6 +126,21 @@ $config = array
     # request 请求接口定义
     'request' => array
     (
+        # 更新售出量
+        'incSell' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'factory_id' => 'yes',
+                'goods_id' => 'yes',
+                'sku_id' => 'yes',
+            ),
+            'set' => array
+            (
+                'sell_num' => array('yes', '+='),
+            ),
+        ),
         # 列表
         'getData' => array
         (

+ 1 - 1
app/factory/database/info.php

@@ -224,7 +224,7 @@ return array
         'goods'       => array
         (
             'type'      => 'text-255',
-            'name'      => '请先选择分类-选择分类,之后选择分类下的商品,点击商品名称可以设置出厂价',
+            'name'      => '请先选择分类-选择分类,之后选择分类下的商品,点击商品名称可以设置出厂价,未设置出厂价则认为该工厂无此商品生成能力',
             'default'   => '',
             'desc'      => '生产能力',
             'match'     => 'option',

+ 28 - 19
app/factory/lib/Order.php

@@ -7,7 +7,7 @@ use Dever;
 class Order
 {
 	# 单个商品下单
-	public function pay($shop_order_id, $shop_id, $factory_id, $price, $num, $goods_id, $sku_id)
+	public function pay($shop_order_id, $shop, $factory_id, $price, $num, $goods_id, $sku_id)
 	{
 		# 先更新销量
 		$state = $this->updateSell($factory_id, $goods_id, $sku_id, $num);
@@ -16,39 +16,48 @@ class Order
 			return false;
 		}
 
-		$where['shop_order_id'] = $shop_order_id;
-		$where['shop_id'] = $shop_id;
-		$where['factory_id'] = $factory_id;
-		$info = Dever::db('factory/order')->find($where);
+		$where['order_num'] = $shop_order_id;
+		$where['shop_id'] = $shop['id'];
+		$where['type'] = 2;
+		$where['type_id'] = $factory_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('factory/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('factory/order')->update($data);
+			$state = Dever::db('shop/buy_order')->update($data);
 		}
 
 		if ($state && $id > 0) {
-			$goods_info = Dever::db('factory/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['shop_id'] = $shop_id;
-				$goods['factory_id'] = $factory_id;
-				$goods['price'] = $price;
-				$goods['num'] = $num;
+				$goods['order_id'] = $id;
+				$goods['shop_id'] = $shop['id'];
 				$goods['goods_id'] = $goods_id;
 				$goods['sku_id'] = $sku_id;
-				Dever::db('factory/order_goods')->insert($goods);
+				$goods['price'] = $price;
+				$goods['num'] = $num;
+				Dever::db('shop/buy_order_goods')->insert($goods);
 			}
 
-			return true;
+			return $id;
 		}
 
 		return false;
@@ -60,8 +69,8 @@ class Order
         $up = array();
         $up['where_factory_id'] = $factory_id;
         $up['where_goods_id'] = $goods_id;
-        $up['sell_num'] = $order['num'];
-        $state = Dever::db('factory/goods')->updateSell($up);
+        $up['sell_num'] = $num;
+        $state = Dever::db('factory/goods')->incSell($up);
 
         if ($state) {
         	if ($sku_id > 0) {
@@ -70,8 +79,8 @@ class Order
 	            $sku_id = -1;
 	        }
 	        $upSku = $up;
-	        $upSku['where_sku_id'] = $v['sku_id'];
-	        $state = Dever::db('factory/goods_sku')->updateSell($upSku);
+	        $upSku['where_sku_id'] = $sku_id;
+	        $state = Dever::db('factory/goods_sku')->incSell($upSku);
         }
 
         return $state;

+ 71 - 57
app/mshop/lib/Buy.php

@@ -391,42 +391,6 @@ class Buy
         }
     }
 
-    # 发货
-    public function send_api()
-    {
-        $id = Dever::input('id');
-        $process = Dever::input('process', 3);
-        $info = Dever::db('shop/buy_order_refund')->find($id);
-
-        if ($info && $info['process'] == 1) {
-            $update['process'] = $process;
-            $update['where_id'] = $info['id'];
-            $state = Dever::db('shop/buy_order_refund')->update($update);
-
-            if ($state && $process == 2) {
-                $data = $this->getView($info['shop_id'], $info['order_id'], false);
-                if ($data) {
-                    if ($info['order_goods_id'] > 0) {
-                        $state = Dever::db('shop/buy_order_goods')->update(array('where_id' => $info['order_goods_id'], 'status' => 3));
-                        $this->pay_refund($state, $data, $info['cash']);
-
-                        # 检查这个订单下的商品是不是都退了
-                        $total = Dever::db('shop/buy_order_goods')->total(array('order_id' => $info['order_id'], 'shop_id' => $id, 'status' => 1));
-                        if ($total <= 0) {
-                            $state = Dever::db('shop/buy_order')->update(array('where_id' => $info['order_id'], 'status' => 8));
-                        }
-                    } else {
-                        # 全部退款
-                        $state = Dever::db('shop/buy_order')->update(array('where_id' => $info['order_id'], 'status' => 8));
-                        $this->pay_refund($state, $data, $info['cash']);
-                    }
-                }
-            }
-        }
-
-        return 'ok';
-    }
-
     # 查看订单状态
     public function orderStatus($id)
     {
@@ -482,6 +446,29 @@ class Buy
 
         </tr>';
 
+        if ($info['type_id'] > 0) {
+            if ($info['type'] == 1) {
+                # 仓库
+                $store = Dever::db('store/info')->find($info['type_id']);
+
+                $html .= '<tr>
+                  <td>供应商信息</td>
+                  <td>'.$this->table(false, array(array('仓库名称:' . $store['name'], '联系人:' . $store['truename'], '联系电话:' . $store['mobile']))).'</td>
+
+                </tr>';
+            } elseif ($info['type'] == 2) {
+                # 工厂
+                $factory = Dever::db('factory/info')->find($info['type_id']);
+
+                $html .= '<tr>
+                  <td>供应商信息</td>
+                  <td>'.$this->table(false, array(array('工厂名称:' . $factory['name'], '联系人:' . $factory['truename'], '联系电话:' . $factory['mobile']))).'</td>
+
+                </tr>';
+            }
+        }
+            
+
         $url = Dever::url('lib/buy.refund', 'mshop');
 
         if ($tk && $tk['process'] == 1) {
@@ -577,19 +564,34 @@ class Buy
         return $html;
     }
 
+    # 发货
+    public function send_commit()
+    {
+        $order_id = Dever::input('order_id');
+        $order = Dever::db('shop/buy_order')->find($order_id);
+
+        if (!$order || ($order && $order['status'] != 3)) {
+            Dever::alert('当前订单状态无法发货');
+        }
+
+        $state = Dever::db('shop/buy_order')->update(array('where_id' => $order['id'], 'status' => 4, 'fdate' => time()));
+
+        return 'reload';
+    }
+
     # 采购订单审核 拆单
     public function audit_commit()
     {
         $order_id = Dever::input('order_id');
-        $info = Dever::db('shop/buy_order')->find($order_id);
+        $order = Dever::db('shop/buy_order')->find($order_id);
 
-        if (!$info || ($info && $info['status'] != 2)) {
+        if (!$order || ($order && $order['status'] != 2)) {
             Dever::alert('当前订单状态无法拆单');
         }
 
         $goods = Dever::db('shop/buy_order_goods')->select(array('order_id' => $order_id));
 
-        $shop = Dever::db('shop/info')->find($info['shop_id']);
+        $shop = Dever::db('shop/info')->find($order['shop_id']);
 
         # 获取门店分配的仓库和工厂
         $shop_store = Dever::db('shop/store')->select(array('shop_id' => $shop['id']));
@@ -622,18 +624,14 @@ class Buy
 
         array_multisort($distance, SORT_ASC, SORT_NUMERIC, $factory);
 
-        print_r($store);
-        print_r($factory);die;
-
         $num = 0;
-        $order = array();
         foreach ($goods as $k => $v) {
             # 开始找仓库
-            $find = $this->store($order_id . '_' . $num, $shop, $store, $v);
+            $find = $this->store($order['order_num'] . '_' . $num, $shop, $store, $v);
             if (!$find[1]) {
                 # 仓库没有,找厂家
                 if ($factory) {
-                    $find = $this->factory($order_id . '_' . $num, $shop, $factory, $v);
+                    $find = $this->factory($order['order_num'] . '_' . $num, $shop, $factory, $v);
                 }
             }
 
@@ -643,20 +641,31 @@ class Buy
         }
 
         if ($num > 0) {
-            Dever::db('shop/buy_order')->update(array('where_id' => $info['id'], 'state' => 2));
+            if ($num == 1 && count($find[1]) == 1) {
+                Dever::db('shop/buy_order')->update(array('where_id' => $order['id'], 'status' => 3, 'type' => $find[0], 'type_id' => implode('', $find[1])));
+
+                Dever::db('shop/buy_order')->delete($find[2][0]);
+                Dever::db('shop/buy_order_goods')->delete(array('order_id' => $find[2][0]));
+
+            } else {
+                Dever::db('shop/buy_order')->update(array('where_id' => $order['id'], 'state' => 2));
+            }
         } else {
             # 没有找到,退款
-            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);
+            Dever::db('shop/buy_order')->update(array('where_id' => $order['id'], 'status' => 8));
+            Dever::load('shop/lib/refund')->set('buy')->apply(2, $shop['id'], $order_id, false, 3, 0);
         }
+
+        return 'ok';
     }
 
     private function store($order_id, $shop, $store, $goods, $state = 2)
     {
         $find = array();
+        $type_id = array();
         $id = array();
         if (!$store) {
-            return array(1, $id);
+            return array(1, $type_id, $id);
         }
         foreach ($store as $k => $v) {
             $where['store_id'] = $v['id'];
@@ -669,7 +678,8 @@ class Buy
                     # 如果库存符合,直接下单即可,生成仓库订单
                     $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'];
+                        $type_id[] = $where['store_id'];
+                        $id[] = $state;
                         break;
                     }
                 } elseif ($state == 1 && $sku['total'] > 0) {
@@ -680,7 +690,8 @@ class Buy
                     if (!$state) {
                         $goods['num'] = $goods['num'] + $sku['total'];
                     } else {
-                        $id[] = $where['store_id'];
+                        $type_id[] = $where['store_id'];
+                        $id[] = $state;
                     }
                     continue;
 
@@ -691,26 +702,29 @@ class Buy
             }
         }
 
-        return array(1, $id);
+        return array(1, $type_id, $id);
     }
 
     private function factory($order_id, $shop, $factory, $goods)
     {
         $find = array();
+        $type_id = array();
         $id = array();
         if (!$factory) {
-            return array(1, $id);
+            return array(1, $type_id, $id);
         }
+
         foreach ($factory as $k => $v) {
             $where['factory_id'] = $v['id'];
             $where['goods_id'] = $goods['goods_id'];
             $where['sku_id'] = ($goods['sku_id'] && $goods['sku_id'] > 0) ? $goods['sku_id'] : -1;
-            $sku = Dever::db('factory/goods_sku')->getOne($where);
+            $sku = Dever::db('factory/goods_sku')->select($where);
 
             if ($sku) {
-                $state = Dever::load('factory/lib/order')->pay($order_id, $shop['id'], $where['factory_id'], $goods['price'], $goods['num'], $where['goods_id'], $where['sku_id']);
+                $state = Dever::load('factory/lib/order')->pay($order_id, $shop, $where['factory_id'], $goods['price'], $goods['num'], $where['goods_id'], $where['sku_id']);
                 if ($state) {
-                    $id[] = $where['factory_id'];
+                    $type_id[] = $where['factory_id'];
+                    $id[] = $state;
                     break;
                 }
             } else {
@@ -718,6 +732,6 @@ class Buy
             }
         }
 
-        return array(2, $id);
+        return array(2, $type_id, $id);
     }
 }

+ 20 - 0
app/mshop/lib/Manage.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace Mshop\Lib;
+
+use Dever;
+
+class Manage
+{
+    # 审核拆单
+    public function audit_api()
+    {
+        return Dever::load('mshop/lib/buy.audit_commit');
+    }
+
+    # 发货
+    public function send_api()
+    {
+        return Dever::load('mshop/lib/buy.send_commit');
+    }
+}

+ 1 - 1
app/mshop/src/Buy.php

@@ -180,6 +180,6 @@ class Buy extends Core
     # 测试审核拆单
     public function audit()
     {
-        Dever::load('mshop/lib/buy')->audit();
+        Dever::load('mshop/lib/buy.audit_commit');
     }
 }

+ 4 - 0
app/shop/database/buy_order.php

@@ -292,6 +292,10 @@ return array
             //'delete' => array('删除', '', '{status} == 1'),
 
             'fast_list' => array('查看详情', '"buy_order_goods&project=shop&order_id={id}&page_type=1"'),
+
+            'oper'  => array('审核', '"mshop/lib/manage.audit?order_id={id}"', '{status} == 2'),
+
+            'oper1'  => array('发货', '"mshop/lib/manage.send?order_id={id}"', '{status} == 3'),
         ),
     ),
 

+ 4 - 4
app/store/lib/Order.php

@@ -35,7 +35,7 @@ class Order
 			$data['status'] = 3;
 			$data['price'] = $price;
 			$data['num'] = $num;
-			$id = $state = Dever::db('shop/buy_order')->insert($where);
+			$id = $state = Dever::db('shop/buy_order')->insert($data);
 		} else {
 			$id = $info['id'];
 
@@ -49,7 +49,7 @@ class Order
 			$goods_info = Dever::db('shop/buy_order_goods')->find(array('order_id' => $id));
 			if (!$goods_info) {
 				$goods['order_id'] = $id;
-				$goods['shop_id'] = $shop_id;
+				$goods['shop_id'] = $shop['id'];
 				$goods['goods_id'] = $goods_id;
 				$goods['sku_id'] = $sku_id;
 				$goods['price'] = $price;
@@ -57,7 +57,7 @@ class Order
 				Dever::db('shop/buy_order_goods')->insert($goods);
 			}
 
-			return true;
+			return $id;
 		}
 
 		return false;
@@ -71,6 +71,6 @@ class Order
     	$data['goods_id'] = $goods_id;
     	$data['sku_id'] = $sku_id;
     	$data['num'] = $num;
-    	return Dever::load('shop/lib/goods')->oper(1, 2, $data);
+    	return Dever::load('store/lib/goods')->oper(1, 2, array($data));
     }
 }