dever пре 3 година
родитељ
комит
30afbf0d7d

+ 17 - 0
app/cash/database/order.php

@@ -485,5 +485,22 @@ return array
             'type' => 'all',
             'col' => '*',
         ),
+
+        'getDataByOrderId' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'source_type' => 'yes',
+                'source_id' => 'yes',
+                'source_order_id' => array('yes', 'in'),
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => '*',
+        ),
     ),
 );

+ 16 - 0
app/factory/admin/Auth.php

@@ -47,6 +47,18 @@ class Auth
 
     public function check()
     {
+        $sign = Dever::input('sign');
+        if ($sign) {
+            $sign = Dever::checkLogin($sign);
+            if ($sign && isset($sign['uid']) && $sign['uid'] > 0) {
+                $user = Dever::db('factory/member')->getManage(array('store_id' => $sign['uid'], 'role_id' => '1'));
+                if ($user) {
+                    $this->save($user);
+                    Dever::location('home', 'factory');
+                }
+            }
+        }
+
         $admin = $this->info();
         if (!$admin) {
             return $this->location_login();
@@ -248,6 +260,10 @@ class Auth
     public function location_login()
     {
         $refer = Encrypt::encode(Dever::url());
+        $admin = $this->info();
+        if ($admin) {
+            Dever::location('home', 'factory');
+        }
         return Dever::location('factory/login?refer=' . $refer);
     }
 

+ 75 - 19
app/factory/admin/Order.php

@@ -125,29 +125,85 @@ class Order extends Core
     public function send_api()
     {
     	$input = Dever::input();
+        $update = array();
 
-    	$order_id = Dever::input('update_where_id');
+        $order_id = Dever::input('update_where_id');
 
-    	$where['order_id'] = $order_id;
-    	$info = Dever::db('shop/buy_order_ps')->find($where);
+        $where['order_id'] = $order_id;
+        $info = Dever::db('shop/buy_order_ps')->find($where);
 
-    	$update = $where;
-    	$update['service_id'] = $input['update_service_id'];
+        $update = $where;
+        foreach ($input as $k => $v) {
+            if (strpos($k, '_c_') !== false) {
+                if ($v == 'null') {
+                    $v = '';
+                }
+                $temp = explode('_c_', $k);
+                $k = str_replace('update_', '', $temp[0]);
+                if (!isset($c[$k])) {
+                    $c[$k] = array();
+                }
+                if (strpos($temp[1], '_i_') !== false) {
+                    $temp = explode('_i_', $temp[1]);
+
+                    if (!isset($c[$k][$temp[1]])) {
+                        $c[$k][$temp[1]] = 0;
+                    } else {
+                        $c[$k][$temp[1]]++;
+                    }
+
+                    $num = $c[$k][$temp[1]];
+
+                    $update[$k][$num][$temp[1]] = $v;
+                }
+            }
+        }
+        if (isset($update['service'])) {
+            $update['service'] = Dever::array_encode($update['service']);
+        }
+        /*
+        $update['service_id'] = $input['update_service_id'];
+        $update['order_num'] = $input['update_order_num'];
         $update['num'] = $input['update_num'];
-    	$update['order_num'] = $input['update_order_num'];
-    	$update['phy'] = $input['update_phy'];
-    	$update['dby'] = $input['update_dby'];
-    	$update['zl'] = $input['update_zl'];
-    	$update['tj'] = $input['update_tj'];
-    	$update['price'] = $input['update_price'];
-    	$update['cdate'] = $input['update_cdate'];
-    	if ($info) {
-    		$update['where_id'] = $info['id'];
-    		Dever::db('shop/buy_order_ps')->update($update);
-    	} else {
-    		Dever::db('shop/buy_order_ps')->insert($update);
-    	}
-    	Dever::db('shop/buy_order')->update(array('status' => 4, 'where_id' => $update['order_id']));
+        $update['phy'] = $input['update_phy'];
+        $update['dby'] = $input['update_dby'];
+        $update['zl'] = $input['update_zl'];
+        $update['tj'] = $input['update_tj'];
+        $update['price'] = $input['update_price'];
+        */
+        $update['cdate'] = $input['update_cdate'];
+        if ($info) {
+            $update['where_id'] = $info['id'];
+            Dever::db('shop/buy_order_ps')->update($update);
+        } else {
+            Dever::db('shop/buy_order_ps')->insert($update);
+        }
+        Dever::db('shop/buy_order')->update(array('status' => 4, 'where_id' => $update['order_id']));
+
+        # 检测是否是关联订单
+        $order = Dever::db('shop/buy_order')->find($update['order_id']);
+        if ($order && $order['parent_type'] > 1) {
+            $data = Dever::db('shop/buy_order')->find(array('status' => 3, 'parent_type' => $order['parent_type'], 'parent_order_id' => $order['parent_order_id']));
+
+            if (!$data) {
+                # 更改关联订单状态
+                if ($order['parent_type'] == 2) {
+                    Dever::db('shop/sell_order')->update(array('where_id' => $order['parent_order_id'], 'status' => 4));
+
+                    $ps_info = Dever::db('shop/buy_order_ps')->getData(array('order_id' => $where['order_id']));
+
+                    if ($ps_info) {
+                        $sell_order = array('id' => $order['parent_order_id']);
+                        foreach ($ps_info as $k => $v) {
+                            $v['service'] = Dever::array_decode($v['service']);
+                            foreach ($v['service'] as $k1 => $v1) {
+                                Dever::load('shop/lib/sell')->updatePs($sell_order, 2, $v1['service_id'], $v1['order_num']);
+                            }
+                        }
+                    }
+                }
+            }
+        }
 
         # 给仓库发消息
         $order = Dever::db('shop/buy_order')->find($update['order_id']);

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
app/factory/assets/pc/html/order_send.html


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
app/factory/assets/pc/html/order_tui.html


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

@@ -384,6 +384,7 @@ return array
     (
         'list_button' => array
         (
+            'new' => array('工厂管理', '"home?sign=".Dever::login({id})', 'factory'),
             //'add' => array('设置生产能力', '"info&where_id={id}&col=goods&oper_save_jump=info&oper_table=info&oper_parent=info"'),
 
             'location' => array('设置生产能力', Dever::url('lib/set.home', 'factory')),

+ 14 - 1
app/factory/database/member.php

@@ -140,6 +140,19 @@ return array
 
     'request' => array
     (
-        
+        'getManage' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'factory_id' => 'yes',
+                'name' => array('yes', 'like'),
+                'role_id' => array('yes', 'like'),
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'order' => array('id' => 'asc'),
+            'col' => '*',
+        ),
     ),
 );

+ 12 - 8
app/goods/lib/Info.php

@@ -322,7 +322,7 @@ class Info
             } else {
                 unset($info['f_price']);
             }
-            
+            $info['sku_name'] = '';
             $sku = $sku > 0 ? $sku : $info['sku_id'];
             if ($sku > 0) {
                 $where['info_id'] = $info['id'];
@@ -432,13 +432,17 @@ class Info
     {
         $info = Dever::db($this->table_info)->find($id);
 
-        if ($info && $sku_id > 0) {
-            $sku = Dever::db($this->table_sku)->find($sku_id);
-
-            if ($sku && $sku['attr']) {
-                $sku['attr'] = Dever::json_decode($sku['attr']);
-                $info['sku'] = Dever::load('attr/api')->getInfoByJson($sku['attr']);
-                $info['code'] = $sku['code'];
+        if ($info) {
+            $info['sku_name'] = '';
+            if ($sku_id > 0) {
+                $sku = Dever::db($this->table_sku)->find($sku_id);
+
+                if ($sku && $sku['attr']) {
+                    $sku['attr'] = Dever::json_decode($sku['attr']);
+                    $info['sku'] = Dever::load('attr/api')->getInfoByJson($sku['attr']);
+                    $info['code'] = $sku['code'];
+                    $info['sku_name'] = $info['sku']['string'];
+                }
             }
         }
 

+ 160 - 59
app/mshop/lib/Buy.php

@@ -234,7 +234,7 @@ class Buy
         # 配送信息
         $info['ps_info'] = Dever::db('shop/buy_order_ps')->find(array('order_id' => $info['id']));
         if ($info['ps_info']) {
-            $info['ps_info']['service_name'] = '商家自送';
+            $info['ps_info']['service'] = Dever::array_decode($info['ps_info']['service']);
             $info['ps_info']['cdate'] = date('Y-m-d H:i', $info['ps_info']['cdate']);
             if ($info['ps_info']['ydate']) {
                 $info['ps_info']['ydate'] = date('Y-m-d H:i', $info['ps_info']['ydate']);
@@ -243,9 +243,14 @@ class Buy
             $status = Dever::db('shop/buy_order_ps')->config['status'];
             $info['ps_info']['status_name'] = $status[$info['ps_info']['status']];
             
-            if ($info['ps_info']['service_id'] > 0) {
-                $service = Dever::db('shop/service')->find($info['ps_info']['service_id']);
-                $info['ps_info']['service_name'] = $service['name'];
+            if ($info['ps_info']['service']) {
+                foreach ($info['ps_info']['service'] as $k => $v) {
+                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                    if ($v['service_id'] > 0) {
+                        $service = Dever::db('shop/service')->find($v['service_id']);
+                        $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                    }
+                }
             }
         }
 
@@ -671,22 +676,50 @@ class Buy
                 ),
 
                 $time,
-                
-                array
-                (
-                    array('配送至', $type_info['name']),
-                    array('配送地址', $type_info['address']),
-                ),
-
-                array
-                (
-                    array('联系人', $type_info['truename']),
-                    array('联系电话', $type_info['mobile']),
-                    array('订单备注', $info['info']),
-                ),
             )
         );
 
+        $parent_order = array();
+        if ($info['parent_type'] == 2) {
+            $parent_order = Dever::db('shop/sell_order')->find($info['parent_order_id']);
+        }
+
+        if ($parent_order && $parent_order['uid']) {
+            if ($parent_order['address_id']) {
+                $address = Dever::load('passport/address')->getOne($parent_order['uid'], $parent_order['address_id']);
+
+                $result[$info['order_num']]['content'][] = array
+                (
+                    array('收件人', $address['contact']),
+                    array('收件人手机', $address['mobile']),
+                );
+                $result[$info['order_num']]['content'][] = array
+                (
+                    array('收货地址', $address['address_info']),
+                    array('门牌号', $address['house_number']),
+                );
+            } else {
+                $user = Dever::db('passport/user')->find($parent_order['uid']);
+                $result[$info['order_num']]['content'][] = array
+                (
+                    array('收件人', $user['username']),
+                    array('收件人手机', $user['mobile']),
+                );
+            }
+        } else {
+            $result[$info['order_num']]['content'][] = array
+            (
+                array('配送至', $type_info['name']),
+                array('配送地址', $type_info['address']),
+            );
+            $result[$info['order_num']]['content'][] = array
+            (
+                array('联系人', $type_info['truename']),
+                array('联系电话', $type_info['mobile']),
+                array('订单备注', $info['info']),
+            );
+        }
+
 
         if ($type == 1 && $info['source_id'] > 0) {
             if ($info['source_type'] == 2) {
@@ -834,7 +867,7 @@ class Buy
 
         $info['ps_info'] = Dever::db('shop/buy_order_ps')->find(array('order_id' => $info['id']));
         if ($info['ps_info']) {
-            $info['ps_info']['service_name'] = '供应商自送';
+            $info['ps_info']['service'] = Dever::array_decode($info['ps_info']['service']);
             $info['ps_info']['cdate'] = date('Y-m-d H:i', $info['ps_info']['cdate']);
             if ($info['ps_info']['ydate']) {
                 $info['ps_info']['ydate'] = date('Y-m-d H:i', $info['ps_info']['ydate']);
@@ -845,15 +878,38 @@ class Buy
             $status = Dever::db('shop/buy_order_ps')->config['status'];
             $info['ps_info']['status_name'] = $status[$info['ps_info']['status']];
             
-            if ($info['ps_info']['service_id'] > 0) {
-                //暂时还没有
-                $service = Dever::db('shop/service')->find($info['ps_info']['service_id']);
-                $info['ps_info']['service_name'] = $service['name'];
-            }
+            $service = array();
+            if ($info['ps_info']['service']) {
+                foreach ($info['ps_info']['service'] as $k => $v) {
+                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                    if ($v['service_id'] > 0) {
+                        $service_info = Dever::db('shop/service')->find($v['service_id']);
+                        $info['ps_info']['service'][$k]['service_name'] = $service_info['name'];
+                    }
 
-            $info['ps_info']['order_num'] = str_replace("\r\n", ',', $info['ps_info']['order_num']);
+                    $service[] = array
+                    (
+                        array('名称', $info['ps_info']['service'][$k]['service_name']),
+                        array('单号', $v['order_num']),
+                    );
+                }
+            }
 
-            $info['ps_info']['order_num'] .= '(<a href="https://www.kuaidi100.com/?from=openv" target="_blank">点此手动查单)</a>';
+            $result['物流信息'] = array
+            (
+                'type' => 'info',
+                'content' => array
+                (
+                    array
+                    (
+                        array('发货时间', $info['ps_info']['cdate']),
+                        array('收货时间', $info['ps_info']['ydate']),
+                        array('查单', '<a href="https://www.kuaidi100.com/?from=openv" target="_blank">点此手动查单</a>'),
+                    ),
+                ),
+            );
+            $result['物流信息']['content'] = array_merge($result['物流信息']['content'], $service);
+            /*
             if ($noprice == 1) {
                 $result['物流信息'] = array
                 (
@@ -915,6 +971,7 @@ class Buy
                     ),
                 );
             }
+            */
         }
 
         
@@ -1325,6 +1382,8 @@ class Buy
             Dever::alert('这不是门店的订单');
         }
 
+        $order['type'] = 1;
+
         $goods = Dever::db('shop/buy_order_goods')->select(array('order_id' => $order['id']));
 
         $shop = Dever::db('shop/info')->find($order['type_id']);
@@ -1352,7 +1411,6 @@ class Buy
                 $price = 0;
                 $num = 0;
                 foreach ($data as $k => $v) {
-                    $k = explode('_', $k);
                     foreach ($v as $k1 => $v1) {
                         $v1['order_num'] .= '_' . $i;
 
@@ -1454,6 +1512,7 @@ class Buy
                                     $data['2_' . $v['id']][] = array
                                     (
                                         'order_id' => $order['id'],
+                                        'order_type' => $order['type'],
                                         'order_num' => $order['order_num'],
                                         'order_index' => $order['order_index'],
                                         'type' => 1,
@@ -1509,6 +1568,7 @@ class Buy
                                 $data['3_' . $v['id']][] = array
                                 (
                                     'order_id' => $order['id'],
+                                    'order_type' => $order['type'],
                                     'order_num' => $order['order_num'],
                                     'order_index' => $order['order_index'],
                                     'type' => 1,
@@ -1684,6 +1744,7 @@ class Buy
     */
     public function createOrder($data)
     {
+        $where['parent_type'] = $data['order_type'];
         $where['parent_order_id'] = $data['order_id'];
         $where['type'] = $data['type'];
         $where['type_id'] = $data['type_id'];
@@ -1692,6 +1753,11 @@ class Buy
         $where['clear'] = true;
         $info = Dever::db('shop/buy_order')->find($where);
 
+        $goods_info = array();
+        $goods['goods_id'] = $data['goods_id'];
+        $goods['sku_id'] = $data['sku_id'];
+        $goods['clear'] = true;
+
         if (!$info) {
             $insert = $where;
             $insert['name'] = $data['order_id'];
@@ -1704,27 +1770,30 @@ class Buy
             $insert['refund_cash'] = 0;
             $insert['refund_p_cash'] = 0;
             $id = $state = Dever::db('shop/buy_order')->insert($insert);
+            if ($id) {
+                $goods['order_id'] = $id;
+                $goods_info = Dever::db('shop/buy_order_goods')->find($goods);
+            }
+            
         } else {
             $id = $info['id'];
-
-            $update['where_id'] = $id;
-            $update['price'] = $info['price'] + ($data['price'] * $data['num']);
-            $update['p_price'] = $info['p_price'] + ($data['p_price'] * $data['num']);
-            $update['num'] = $info['num'] + $data['num'];
-            $state = Dever::db('shop/buy_order')->update($update);
-        }
-
-        if ($state && $id > 0) {
-            $goods_info = Dever::db('shop/buy_order_goods')->find(array('order_id' => $id));
+            $goods['order_id'] = $id;
+            $goods_info = Dever::db('shop/buy_order_goods')->find($goods);
+            $state = false;
             if (!$goods_info) {
-                $goods['order_id'] = $id;
-                $goods['goods_id'] = $data['goods_id'];
-                $goods['sku_id'] = $data['sku_id'];
-                $goods['price'] = $data['price'];
-                $goods['p_price'] = $data['p_price'];
-                $goods['num'] = $data['num'];
-                Dever::db('shop/buy_order_goods')->insert($goods);
+                $update['where_id'] = $id;
+                $update['price'] = $info['price'] + ($data['price'] * $data['num']);
+                $update['p_price'] = $info['p_price'] + ($data['p_price'] * $data['num']);
+                $update['num'] = $info['num'] + $data['num'];
+                $state = Dever::db('shop/buy_order')->update($update);
             }
+        }
+
+        if ($state && $id > 0 && !$goods_info) {
+            $goods['price'] = $data['price'];
+            $goods['p_price'] = $data['p_price'];
+            $goods['num'] = $data['num'];
+            Dever::db('shop/buy_order_goods')->insert($goods);
 
             $state = $this->updateSell($data['source_type'], $data['source_id'], $data['goods_id'], $data['sku_id'], $data['num']);
 
@@ -1814,7 +1883,7 @@ class Buy
 
         $info['ps_info'] = Dever::db('shop/buy_order_ps')->find(array('order_id' => $info['id']));
         if ($info['ps_info']) {
-            $info['ps_info']['service_name'] = '供应商自送';
+            $info['ps_info']['service'] = Dever::array_decode($info['ps_info']['service']);
             $info['ps_info']['cdate'] = date('Y-m-d H:i', $info['ps_info']['cdate']);
             if ($info['ps_info']['ydate']) {
                 $info['ps_info']['ydate'] = date('Y-m-d H:i', $info['ps_info']['ydate']);
@@ -1824,14 +1893,6 @@ class Buy
 
             $ps_status = Dever::db('shop/buy_order_ps')->config['status'];
             $info['ps_info']['status_name'] = $status[$info['ps_info']['status']];
-            
-            if ($info['ps_info']['service_id'] > 0) {
-                //暂时还没有
-                $service = Dever::db('shop/service')->find($info['ps_info']['service_id']);
-                $info['ps_info']['service_name'] = $service['name'];
-            }
-
-            $info['ps_info']['order_num'] = str_replace("\r\n", ',', $info['ps_info']['order_num']);
         }
 
         $pdf = Dever::load('pdf/lib/base')->init();
@@ -1854,29 +1915,68 @@ class Buy
             if (!$info['ps_info']) {
                 $pdf->left('发货供应商:' . $source_info['name']);
             } else {
-                $pdf->br()->left('发货供应商:' . $source_info['name'], 140)->left('发货时间:' . $info['ps_info']['cdate'], 40);
+                //$pdf->br()->left('发货供应商:' . $source_info['name'], 140)->left('发货时间:' . $info['ps_info']['cdate'], 40);
+
+                $pdf->br()->left('发货供应商:' . $source_info['name'], 80)->left('发货时间:' . $info['ps_info']['cdate'], 60)->left('收货时间:' . $info['ps_info']['ydate'], 40);
             }
             
+            if ($info['ps_info'] && $info['ps_info']['service']) {
+                foreach ($info['ps_info']['service'] as $k => $v) {
+                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                    if ($v['service_id'] > 0) {
+                        $service = Dever::db('shop/service')->find($v['service_id']);
+                        $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                    }
 
-            if ($info['ps_info']) {
-                $pdf->br()->left('物流信息:' . $info['ps_info']['service_name'] . '     物流单号:' . $info['ps_info']['order_num'], 140)->left('确认收货时间:' . $info['ps_info']['ydate'], 40);
+                    $pdf->br()->left('物流信息:' . $info['ps_info']['service'][$k]['service_name'], 80)->left('物流单号:' . $info['ps_info']['service'][$k]['order_num'], 40);
+                }
             }
 
             $pdf->hr();
 
         } else {
-            $pdf->br()->left('订单状态:' . $status, 80)->left('订货人:' . $type_info['truename'], 60)->left('订货时间:' . $operdate, 40);
+            $pdf->br()->left('订单状态:' . $status, 80)->left('订货时间:' . $operdate, 80);
 
             $pdf->hr();
+            
+            $parent_order = array();
+            if ($info['parent_type'] == 2) {
+                $parent_order = Dever::db('shop/sell_order')->find($info['parent_order_id']);
+            }
+            if ($parent_order && $parent_order['uid']) {
+                if ($parent_order['address_id']) {
+                    $address = Dever::load('passport/address')->getOne($parent_order['uid'], $parent_order['address_id']);
 
-            $pdf->br()->left('配送至:' . $type_info['name'], 150)->right('收件人联系方式:' . $type_info['truename'] . ',' . $type_info['mobile'], 40);
+                    $pdf->br()->left('收件人:' . $address['contact'], 80)->left('收件人手机:' . $address['mobile'], 80);
 
-            $pdf->left('配送地址:' . $type_info['address']);
+                    $pdf->left('收件地址:' . $address['address_info'] . ',' . $address['house_number']);
+
+                } else {
+                    $user = Dever::db('passport/user')->find($parent_order['uid']);
+
+                    $pdf->br()->left('收件人:' . $user['username'], 80)->left('收件人手机:' . $user['mobile'], 80);
+                }
+            } else {
+                $pdf->br()->left('配送至:' . $type_info['name'], 80)->left('联系方式:' . $type_info['truename'] . ',' . $type_info['mobile'], 80);
+
+                $pdf->left('配送地址:' . $type_info['address']);
+            }
 
             $pdf->hr();
 
-            if ($info['ps_info']) {
+            if ($info['ps_info'] && $info['ps_info']['service']) {
+                $pdf->br()->left('发货时间:' . $info['ps_info']['cdate'], 80)->left('收货时间:' . $info['ps_info']['ydate'], 80);
+
+                foreach ($info['ps_info']['service'] as $k => $v) {
+                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                    if ($v['service_id'] > 0) {
+                        $service = Dever::db('shop/service')->find($v['service_id']);
+                        $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                    }
 
+                    $pdf->br()->left('物流信息:' . $info['ps_info']['service'][$k]['service_name'], 80)->left('物流单号:' . $info['ps_info']['service'][$k]['order_num'], 80);
+                }
+                /*
                 $pdf->br()->left('发货时间:' . $info['ps_info']['cdate'], 80)->left('配货员:' . $info['ps_info']['phy'], 70)->left('打包员:' . $info['ps_info']['dby'], 40);
 
                 if ($info['ps_info']['zl'] && $info['ps_info']['tj']) {
@@ -1898,6 +1998,7 @@ class Buy
                 if ($info['ps_info']['ydate']) {
                     $pdf->left('到货确认时间:' . $info['ps_info']['ydate']);
                 }
+                */
 
                 $pdf->hr();
             }

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

@@ -17,4 +17,23 @@ class Manage
     {
         return Dever::load('mshop/lib/buy.send_commit');
     }
+
+    # 门店部分退款
+    public function sell_order_tui_one_commit_api()
+    {
+        $shop_id = Dever::input('shop_id');
+        $order_id = Dever::input('order_id');
+        $order_goods_id = Dever::input('order_goods_id');
+        $num = 0;
+        $buy_status = Dever::input('status');
+        $desc = Dever::input('desc');
+
+        if ($buy_status == 3) {
+            $status = 1;
+        } else {
+            $status = 2;
+        }
+
+        return Dever::load('shop/lib/refund')->set('sell')->apply(2, $shop_id, $order_id, $order_goods_id, $status, $num, $desc, '', 2, $buy_status);
+    }
 }

+ 1 - 1
app/mshop/lib/Out.php

@@ -117,7 +117,7 @@ class Out
     {
         $order_data = $this->where($type_id);
         if ($area) {
-            $order_data['area'] = $area . ','  $type_id;
+            $order_data['area'] = $area . ',' . $type_id;
         }
         
         $order_data['name'] = $name;

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

@@ -84,7 +84,7 @@ class Out extends Core
             $this->data['list'][$k]['ku_state'] = 1;
 
             # 验证是否有货
-            $total = Dever::load('shop/lib/info')->checkTotal($n, $v, $this->shop_id, $s);
+            $total = Dever::load('shop/lib/info')->checkTotal($n, $v, $this->shop_id, $s, 3);
 
             if ($total <= 0) {
                 $this->data['list'][$k]['ku_state'] = 2;

Разлика између датотеке није приказан због своје велике величине
+ 39 - 0
app/shop/assets/pc/html/buy_order_tui.html


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

@@ -680,5 +680,24 @@ return array
             'type' => 'one',
             'col' => 'sum(num) as total',
         ),
+
+        'getDataToId' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'source_type' => 'yes',
+                'source_id' => 'yes',
+                'parent_type' => 'yes',
+                'parent_order_id' => 'yes',
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('cdate' => 'desc'),
+            'col' => '*|id',
+        ),
     ),
 );

+ 40 - 80
app/shop/database/buy_order_ps.php

@@ -54,88 +54,37 @@ return array
             'value'     => Dever::input('search_option_order_id'),
         ),
 
-        'service_id'        => array
+        'service'       => array
         (
-            'type'      => 'int-11',
-            'name'      => '配送服务商',
-            'default'   => '-1',
-            'desc'      => '配送服务商',
-            'match'     => 'is_numeric',
-            'update'    => 'select',
-            'option'    => $service,
-        ),
-
-        'order_num'        => array
-        (
-            'type'      => 'varchar-800',
-            'name'      => '快递单号-多个用换行隔开',
-            'default'   => '',
-            'desc'      => '快递单号',
-            'match'     => 'is_string',
-            'update'    => 'textarea',
-        ),
-
-        'phy'        => array
-        (
-            'type'      => 'varchar-200',
-            'name'      => '配货员',
+            'type'      => 'text-1000',
+            'name'      => '快递信息',
             'default'   => '',
-            'desc'      => '配货',
+            'desc'      => '配送发货',
             'match'     => 'is_string',
-            'update'    => 'text',
-        ),
-
-        'dby'        => array
-        (
-            'type'      => 'varchar-200',
-            'name'      => '打包员',
-            'default'   => '',
-            'desc'      => '打包员',
-            'match'     => 'option',
-            'update'    => 'text',
-        ),
-
-        'zl'        => array
-        (
-            'type'      => 'varchar-200',
-            'name'      => '包裹重量-单位:克',
-            'default'   => '',
-            'desc'      => '包裹重量',
-            'match'     => 'option',
-            'update'    => 'text',
-        ),
-
-        'tj'        => array
-        (
-            'type'      => 'varchar-200',
-            'name'      => '包裹体积-单位:立方厘米',
-            'default'   => '',
-            'desc'      => '包裹体积',
-            'match'     => 'option',
-            'update'    => 'text',
-        ),
-
-
-        'num'        => array
-        (
-            'type'      => 'int-11',
-            'name'      => '包裹数量',
-            'default'   => '',
-            'desc'      => '包裹数量',
-            'match'     => 'option',
-            'search'    => 'select',
-            'list'        => true,
-        ),
-
-        'price'      => array
-        (
-            'type'      => 'varchar-50',
-            'name'      => '快递费用',
-            'default'   => '0',
-            'desc'      => '快递费用',
-            'match'     => 'option',
-            'update'    => 'text',
-            'list'        => true,
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'service_id',
+                    'name'      => '配送服务商',
+                    'default'   => '-1',
+                    'desc'      => '配送服务商',
+                    'match'     => 'is_numeric',
+                    'update'    => 'select',
+                    'option'    => $service,
+                ),
+
+                array
+                (
+                    'col'       => 'order_num',
+                    'type'      => 'varchar-500',
+                    'name'      => '快递单号-填写一个单号即可',
+                    'default'   => '',
+                    'desc'      => '快递单号',
+                    'match'     => 'is_string',
+                    'update'    => 'text',
+                ),
+            ),
         ),
 
         'status'        => array
@@ -191,6 +140,17 @@ return array
 
     'request' => array
     (
-        
+        'getData' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'order_id' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('id' => 'desc'),
+            'col' => '*',
+        ),
     ),
 );

+ 7 - 7
app/shop/database/sell_order.php

@@ -181,21 +181,19 @@ return array
         'store_id'      => array
         (
             'type'      => 'int-11',
-            'name'      => '发货仓库',
+            'name'      => '发货仓库-废弃',
             'default'   => '',
             'desc'      => '发货仓库',
             'match'     => 'is_numeric',
-            'search'    => 'select',
             'option'    => $store,
             'update'    => 'select',
-            'search'    => 'hidden',
-            'search'    => $search_option_shop_type == 2 ? array
+            'searchs'    => $search_option_shop_type == 2 ? array
             (
                 'api' => 'store/info-like',
                 'col' => 'name',
                 'result' => 'id',
             ) : 'hidden',
-            'list'      => $search_option_shop_type == 2 ? '"{store_id}" > 0 ? Dever::load("store/info-one#name", {store_id}) : ""' : false,
+            //'list'      => $search_option_shop_type == 2 ? '"{store_id}" > 0 ? Dever::load("store/info-one#name", {store_id}) : ""' : false,
             'list_order' => 6,
         ),
 
@@ -671,7 +669,9 @@ return array
         'list_button' => array
         (
             //fast_list
-            'list' => array('查看详情', '"sell_order_goods&project=shop&order_id={id}&page_type=1"'),
+            'list' => array('查看详情', '"sell_order_goods&project=shop&order_id={id}&page_type=&search_option_shop_type='.$search_option_shop_type.'"'),
+
+            'list1' => array('查看采购单', '"buy_order&project=shop&search_option_type=1&&search_option_parent_type=2&search_option_parent_order_id={id}&oper_table=sell_order&search_option_shop_type='.$search_option_shop_type.'"', '{status} >= 3 && {shop_type} == 2'),
 
             //'location2' => array('分配仓库', Dever::url('lib/set.store', 'shop')),
 
@@ -681,7 +681,7 @@ return array
 
             'fast' => array('审核', '"sell_order&where_id={id}&col=audit,audit_desc&oper_save_jump=sell_order&oper_table=sell_order&oper_parent=sell_order"', '{status} == 2 && {shop_type} == 2'),
 
-            'oper'  => array('收货', '"shop/lib/manage.setSellOrderStatus?shop_id={shop_id}&order_id={id}"', '{status} == 4 && {shop_type} == 2'),
+            'oper'  => array('确认收货', '"shop/lib/manage.setSellOrderStatus?shop_id={shop_id}&order_id={id}"', '{status} == 4 && {shop_type} == 2'),
 
             //'edit' => array('退款', 'status,tk_time,tk_pic,tk_desc,tk_admin,tk_status', '{status} == 6'),
             //'delete' => array('删除', '', '{status} == 1'),

+ 27 - 37
app/shop/database/sell_order_ps.php

@@ -54,47 +54,37 @@ return array
             'value'     => Dever::input('search_option_order_id'),
         ),
 
-        'service_id'        => array
+        'service'       => array
         (
-            'type'      => 'int-11',
-            'name'      => '配送服务商',
-            'default'   => '-1',
-            'desc'      => '配送服务商',
-            'match'     => 'is_numeric',
-            'update'    => 'select',
-            'option'    => $service,
-        ),
-
-        'order_num'        => array
-        (
-            'type'      => 'varchar-800',
-            'name'      => '快递单号-多个用换行隔开',
+            'type'      => 'text-1000',
+            'name'      => '快递信息',
             'default'   => '',
-            'desc'      => '快递单号',
+            'desc'      => '配送发货',
             'match'     => 'is_string',
-            'update'    => 'textarea',
-        ),
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'service_id',
+                    'name'      => '配送服务商',
+                    'default'   => '-1',
+                    'desc'      => '配送服务商',
+                    'match'     => 'is_numeric',
+                    'update'    => 'select',
+                    'option'    => $service,
+                ),
 
-        'num'        => array
-        (
-            'type'      => 'int-11',
-            'name'      => '包裹数量',
-            'default'   => '',
-            'desc'      => '包裹数量',
-            'match'     => 'is_numeric',
-            'search'    => 'select',
-            'list'        => true,
-        ),
-
-        'price'      => array
-        (
-            'type'      => 'varchar-50',
-            'name'      => '快递费用',
-            'default'   => '',
-            'desc'      => '快递费用',
-            'match'     => 'option',
-            'update'    => 'text',
-            'list'        => true,
+                array
+                (
+                    'col'       => 'order_num',
+                    'type'      => 'varchar-500',
+                    'name'      => '快递单号-填写一个单号即可',
+                    'default'   => '',
+                    'desc'      => '快递单号',
+                    'match'     => 'is_string',
+                    'update'    => 'text',
+                ),
+            ),
         ),
 
         'status'        => array

+ 1 - 1
app/shop/lib/Info.php

@@ -385,7 +385,7 @@ class Info
         $min = $info['min'];
 
         # 增加最小起购量
-        if ($min > 0 && $num < $min) {
+        if ($state < 3 && $min > 0 && $num < $min) {
             $num = $min;
         }
         if ($num > $total) {

+ 22 - 4
app/shop/lib/Manage.php

@@ -64,7 +64,7 @@ class Manage
             if ($info['status'] == 6 || $info['status'] == 8) {
                 return '已退款';
             } else {
-                return '申请中';
+                return '有退款';
             }
         } else {
             return '未申请';
@@ -249,7 +249,7 @@ class Manage
                 Dever::load('shop/lib/sell.audit_commit');
             } else {
                 # 退款
-                $shop = Dever::db('shop/info')->find($info['type_id']);
+                $shop = Dever::db('shop/info')->find($info['shop_id']);
                 Dever::load('shop/lib/refund')->set('sell')->apply(1, $shop['id'], $id, false, 3, 0, '未通过审核');
             }
         }
@@ -461,10 +461,14 @@ class Manage
             return $type_info['name'] . '('.$type_info['mobile'].')';
         } elseif ($type == 2) {
             $type_info = Dever::db('store/info')->one($type_id);
-            return $type_info['name'] . '('.$type_info['mobile'].')';
+            $sign = Dever::login($type_id);
+            $link = Dever::url('home?sign=' . $sign, 'store');
+            return $type_info['name'] . '('.$type_info['mobile'].')<br /><a href="'.$link.'" target="_blank">进入仓库管理</a>';
         } elseif ($type == 3) {
+            $sign = Dever::login($type_id);
+            $link = Dever::url('home?sign=' . $sign, 'factory');
             $type_info = Dever::db('factory/info')->one($type_id);
-            return $type_info['name'] . '('.$type_info['mobile'].')';
+            return $type_info['name'] . '('.$type_info['mobile'].')<br /><a href="'.$link.'" target="_blank">进入工厂管理</a>';
         } else {
             return '无';
         }
@@ -559,4 +563,18 @@ class Manage
         
         return $result;
     }
+
+    # 确认收货
+    public function setSellOrderStatus_api()
+    {
+        $order_id = Dever::input('order_id');
+
+        $info = Dever::db('shop/sell_order')->find($order_id);
+        if ($info) {
+            Dever::load('shop/lib/sell')->finish($info, $info['shop_id']);
+            return 'reload';
+        } else {
+            Dever::alert('错误的订单号');
+        }
+    }
 }

+ 32 - 4
app/shop/lib/Refund.php

@@ -111,7 +111,7 @@ class Refund
     }
 
     # 申请退款
-    public function apply($type, $id, $order_id, $order_goods_id, $status = 1, $num = 0, $desc = '', $pic = '', $process = 2)
+    public function apply($type, $id, $order_id, $order_goods_id, $status = 1, $num = 0, $desc = '', $pic = '', $process = 2, $buy_status = false)
     {
         if ($status != 1 && $status != 2 && $status != 3) {
             Dever::alert('当前订单状态不允许退货退款');
@@ -221,7 +221,7 @@ class Refund
                 Dever::db($this->order_table)->update($update);
 
                 if ($id && $process == 2) {
-                    $this->action($log, $process, $data);
+                    $this->action($log, $process, $data, true, $buy_status);
                 }
             } else {
                 Dever::alert('您没有可以退款的金额');
@@ -233,7 +233,7 @@ class Refund
     }
 
     # 确认退款
-    public function action($info, $process, $order = false, $cash = true)
+    public function action($info, $process, $order = false, $cash = true, $buy_status = false)
     {
         if (!is_array($info)) {
             $info = Dever::db($this->refund_table)->find($info);
@@ -305,6 +305,29 @@ class Refund
                         $update['refund_status'] = 1;
                         $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) {
+
+                            $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;
+                                }
+                            }
+                        }
+                    }
                 }
             } else {
                 $update['where_id'] = $order['id'];
@@ -334,7 +357,7 @@ class Refund
                 }
             }
 
-            if ($cash && $this->type == 'buy' && $order['source_id'] && $order['source_id'] > 0) {
+            if ($cash && isset($order['source_id']) && $order['source_id'] && $order['source_id'] > 0) {
                 $order['num'] = $info['num'];
                 if (isset($update['status'])) {
                     $order['status'] = $update['status'];
@@ -352,6 +375,11 @@ class Refund
             # 如果是采购单,退款后要恢复库存
             Dever::load('shop/lib/goods')->oper($order, 1, 1, $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, '退货退款');
+        } 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);
+        }
 
         return 'reload';
     }

+ 141 - 73
app/shop/lib/Sell.php

@@ -233,7 +233,7 @@ class Sell
         if ($info['method'] == 2) {
             $info['ps_info'] = Dever::db('shop/sell_order_ps')->find(array('order_id' => $info['id']));
             if ($info['ps_info']) {
-                $info['ps_info']['service_name'] = '商家自送';
+                $info['ps_info']['service'] = Dever::array_decode($info['ps_info']['service']);
                 $info['ps_info']['cdate'] = date('Y-m-d H:i', $info['ps_info']['cdate']);
                 if ($info['ps_info']['qu_date']) {
                     $info['ps_info']['qu_date'] = date('Y-m-d H:i', $info['ps_info']['qu_date']);
@@ -244,10 +244,14 @@ class Sell
 
                 $status = Dever::db('shop/sell_order_ps')->config['status'];
                 $info['ps_info']['status_name'] = $status[$info['ps_info']['status']];
-                
-                if ($info['ps_info']['service_id'] > 0) {
-                    $service = Dever::db('shop/service')->find($info['ps_info']['service_id']);
-                    $info['ps_info']['service_name'] = $service['name'];
+                if ($info['ps_info']['service']) {
+                    foreach ($info['ps_info']['service'] as $k => $v) {
+                        $info['ps_info']['service'][$k]['service_name'] = '商家自送';
+                        if ($v['service_id'] > 0) {
+                            $service = Dever::db('shop/service')->find($v['service_id']);
+                            $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                        }
+                    }
                 }
             }
         }
@@ -1079,23 +1083,31 @@ class Sell
     }
 
     # 添加配送信息
-    public function updatePs($order, $status = 1, $service_id = -1, $order_num = false)
+    public function updatePs($order, $status = 1, $service_id = -1, $order_num = '')
     {
         $where['order_id'] = $order['id'];
         $data = Dever::db('shop/sell_order_ps')->find($where);
 
+        $service = array();
+        if ($service_id) {
+            $service['service_id'] = $service_id;
+        }
+        if ($order_num) {
+            $service['order_num'] = $order_num;
+        }
+        if ($service) {
+            $service = Dever::array_encode($service);
+        }
+
         if (!$data) {
             $insert = $where;
-            $insert['service_id'] = $service_id;
-            $insert['price'] = 0;
+            if ($service) {
+                $insert['service'][] = $service;
+            }
             $insert['status'] = $status;
-            $insert['num'] = 1;
             if ($status == 2) {
                 $insert['qu_date'] = time();
             }
-            if ($order_num) {
-                $insert['order_num'] = $order_num;
-            }
         
             Dever::db('shop/sell_order_ps')->insert($insert);
         } else {
@@ -1108,11 +1120,10 @@ class Sell
             if ($status == 3) {
                 $update['qs_date'] = time();
             }
-            if ($order_num) {
-                $update['order_num'] = $order_num;
-            }
-            if ($service_id) {
-                $update['service_id'] = $service_id;
+            if ($service) {
+                $data['service'] = Dever::array_decode($data['service']);
+                $update['service'] = $data['service'];
+                $update['service'][] = $service;
             }
             Dever::db('shop/sell_order_ps')->update($update);
         }
@@ -1161,6 +1172,18 @@ class Sell
                 $card_update['status'] = 4;
                 Dever::db('goods/card_code')->update($card_update);
             }
+
+            if ($info['shop_type'] == 2) {
+                $w['parent_type'] = 2;
+                $w['parent_order_id'] = $info['id'];
+                $w['status'] = 4;
+                $buy_order = Dever::db('shop/buy_order')->select($w);
+                if ($buy_order) {
+                    foreach ($buy_order as $k => $v) {
+                        Dever::load('mshop/lib/buy')->set(1,1)->finish($shop_id, $v['id']);
+                    }
+                }
+            }
             return 'ok';
         } else {
             Dever::alert('您没有权限核销');
@@ -1358,7 +1381,7 @@ class Sell
 
                         array
                         (
-                            array('收货地址', $address['address']),
+                            array('收货地址', $address['address_info']),
                             array('门牌号', $address['house_number']),
                         ),
                     ),
@@ -1449,6 +1472,10 @@ class Sell
                 $sku = '无';
             }
 
+            $tui = Dever::url('buy_order_tui?shop_id='.$v['shop_id'].'&order_goods_id=' . $v['id'] . '&order_id=' . $info['id'] . '&cash=' . $v['price'], 'shop');
+
+            $status = '<a href="javascript:;" onclick="fastEdit($(this), \''.$tui.'\', \'退款\', \'\', 1)" class="layui-btn">退款</a>';
+
             $d = array
             (
                 'pic' => $goods_info['cover'],
@@ -1497,6 +1524,72 @@ class Sell
                 'total' => $refund_body_total,
             );
         }
+
+        $search_option_shop_type = Dever::input('search_option_shop_type');
+        if ($search_option_shop_type == 2) {
+            # 平台门店采购单
+            $buy_order = Dever::db('shop/buy_order')->getDataToId(array('type' => 1, 'type_id' => $info['shop_id'], 'parent_type' => 2, 'parent_order_id' => $info['id']));
+            $source_order_id = array();
+            if ($buy_order) {
+                $source_order_id = array_keys($buy_order);
+            }
+
+            # 平台门店结算单
+            if ($source_order_id) {
+                $cash_order = Dever::db('cash/order')->getDataByOrderId(array('source_order_id' => $source_order_id));
+
+                $col = 'cash';
+            }
+        }
+
+        if (isset($cash_order) && $cash_order) {
+            $head = array('序号', '结算单号', '数量', '金额', '结算类型', '入账状态', '审核状态', '结算时间', '审核未通过原因', '管理');
+
+            $body = array();
+            $config = Dever::db('cash/order')->config;
+            foreach ($cash_order as $k => $v) {
+                $cdate = date('Y-m-d H:i', $v['cdate']);
+                $fdate = $v['fdate'] ? date('Y-m-d H:i', $v['fdate']) : '';
+                $operdate = $v['operdate'] ? date('Y-m-d H:i', $v['operdate']) : '';
+                $cash = $v[$col];
+
+                $url = Dever::url('project/database/list?project=shop&table=buy_order_goods&order_id='.$v['source_order_id'].'&page_type=1', 'manage');
+                $v['source_order_num'] = '<a href="'.$url.'" style="color:blue">'.$v['source_order_num'].'</a>';
+
+                $m = '';
+                if ($v['audit'] == 1 && $v['audit_type'] == 2) {
+                    $url = Dever::url('project/database/update?project=cash&table=order&where_id='.$v['id'].'&col=audit,desc', 'manage');
+                    $m = '<a href="javascript:;" onclick="fastEdit($(this), \''.$url.'\', \'审核\', \'\', 1)" class="layui-btn">审核</a>';
+                }
+
+                $d = array
+                (
+                    $k+1,
+                    $v['order_num'],
+                    $v['num'],
+                    $cash,
+                    $config['config_jstype'][$v['jstype']],
+                    $config['config_status'][$v['status']],
+                    $config['config_audit'][$v['audit']],
+                    $operdate,
+                    $v['desc'],
+                    $m,
+                );
+
+                $body[] = $d;
+            }
+
+            $result['对账清单'] = array
+            (
+                'type' => 'table',
+                'content' => array
+                (
+                    'head' => $head,
+                    'body' => $body,
+                )
+            );
+                
+        }
         
 
         $head = array
@@ -1595,10 +1688,12 @@ class Sell
             Dever::alert('当前订单状态无法拆单');
         }
 
-        if ($order['type'] != 10) {
+        if ($order['shop_type'] != 2) {
             Dever::alert('这不是平台店的订单');
         }
 
+        $order['type'] = 2;
+
         $goods = Dever::db('shop/sell_order_goods')->select(array('order_id' => $order_id));
 
         $shop = Dever::db('shop/info')->find($order['shop_id']);
@@ -1607,72 +1702,45 @@ class Sell
 
         $send = array();
 
-        if ($data) {
+        if (!$goods && $data) {
             # 开始生成订单
-            $num = count($data);
-            if (!$goods && $num == 1) {
-                foreach ($data as $k => $v) {
-                    $k = explode('_', $k);
+            $i = $order['order_index'];
+            foreach ($data as $k => $v) {
+                foreach ($v as $k1 => $v1) {
+                    $v1['order_num'] .= '_' . $i;
 
-                    $p_price = 0;
-                    foreach ($v as $k1 => $v1) {
-                        $v1['order_num'] .= '_' . $i;
-
-                        $state = Dever::load('mshop/lib/buy')->createOrder($v1);
-                        $send[$state] = $v1;
-                    }
-                    Dever::db('shop/buy_order')->update(array('where_id' => $order['id'], 'status' => 3, 'source_type' => $k[0], 'source_id' =>  $k[1], 'p_price' => $p_price, 'operdate' => time()));
+                    $state = Dever::load('mshop/lib/buy')->createOrder($v1);
+                    $send[$state] = $v1;
                 }
-            } elseif ($num >= 1) {
-                $i = $order['order_index'];
-                $price = 0;
-                $num = 0;
-                foreach ($data as $k => $v) {
-                    $k = explode('_', $k);
-                    foreach ($v as $k1 => $v1) {
-                        $v1['order_num'] .= '_' . $i;
-
-                        $state = Dever::load('mshop/lib/buy')->createOrder($v1);
-                        $send[$state] = $v1;
-
-                        Dever::db('shop/buy_order_goods')->delete(array('id' => $v1['order_goods_id'], 'clear' => true));
-                        $price += $v1['price'];
-                        $num += $v1['num'];
+                $i++;
+            }
+
+            Dever::db('shop/sell_order')->update(array('where_id' => $order['id'], 'status' => 3));
+        } else {
+            Dever::db('shop/sell_order')->update(array('where_id' => $order['id'], 'audit' => 1));
+            if ($goods) {
+                $string = array();
+                foreach ($goods as $k => $v) {
+                    $info = Dever::load('goods/lib/info')->getInfoBySku($v['goods_id'], $v['sku_id']);
+                    
+                    if ($info['sku_name']) {
+                        $info['name'] .= '('.$info['sku_name'].')';
                     }
-                    $i++;
+                    $string[] = $info['name'];
                 }
-
-                $order['price'] = $order['price'] - $price;
-                $order['num'] = $order['num'] - $num;
-                Dever::db('shop/buy_order')->update(array('where_id' => $order['id'], 'price' => $order['price'], 'num' => $order['num'], 'audit' => 1, 'order_num' => $order['order_num'] . '_' . $i, 'clear' => true));
+                $string = implode('、', $string);
+                Dever::alert('商品:'.$string.'库存不足或厂家未生产,请联系供货商备货,该订单进入重新审核状态');
+            } else {
+                Dever::alert('供货商库存不足,请联系供货商备货,该订单进入重新审核状态');
             }
-        } else {
-            Dever::db('shop/buy_order')->update(array('where_id' => $order['id'], 'audit' => 1));
-            Dever::alert('供货商库存不足,请联系供货商备货,该订单进入重新审核状态');
         }
 
         if ($send) {
             foreach ($send as $k => $v) {
                 Dever::load('mshop/lib/buy')->sendMsg($v['source_type'], $v['source_id'], $k);
 
-                if ($k != $order['id']) {
-                    $order_info = Dever::db('shop/buy_order')->find(array('id' => $k, 'clear' => true));
-                    Dever::load('cash/lib/order')->up($order_info, 1, 1);
-                }
-            }
-        }
-
-        if ($goods) {
-            $send = array();
-            foreach ($goods as $k => $v) {
-                $send[$v['order_id']] = $v;
-            }
-
-            if ($send) {
-                foreach ($send as $k => $v) {
-                    $order_info = Dever::db('shop/buy_order')->find(array('id' => $k, 'clear' => true));
-                    Dever::load('cash/lib/order')->up($order_info, 1, 1);
-                }
+                $order_info = Dever::db('shop/buy_order')->find(array('id' => $k, 'clear' => true));
+                Dever::load('cash/lib/order')->up($order_info, 1, 1);
             }
         }
 

+ 3 - 3
app/shop/src/Excel.php

@@ -134,9 +134,9 @@ class Excel
                 $d = array
                 (
                     $v['order_num'],
-                    $address['contact'],
-                    $address['mobile'],
-                    $address['add_string'],
+                    isset($address['contact']) ? $address['contact'] : '',
+                    isset($address['mobile']) ? $address['mobile'] : '',
+                    isset($address['address_info']) ? $address['address_info'] : '',
                     $store['name'],
 
                     $goods_info['code'],

+ 17 - 0
app/shop/template/pc/buy_order_tui.php

@@ -0,0 +1,17 @@
+<?php
+/*
+|--------------------------------------------------------------------------
+| home
+|--------------------------------------------------------------------------
+*/
+$view
+
+# 定义名称
+->fetch('.form1@action', Dever::url('lib/manage.sell_order_tui_one_commit?json=1', 'mshop')) 
+->fetch('#shop_id@value', '<{Dever::input("shop_id")}>')
+->fetch('#order_id@value', '<{Dever::input("order_id")}>')
+->fetch('#order_goods_id@value', '<{Dever::input("order_goods_id")}>')
+->fetch('#cash', '<{Dever::input("cash")}>') 
+
+# display
+->display();

+ 17 - 0
app/store/admin/Auth.php

@@ -47,6 +47,18 @@ class Auth
 
     public function check()
     {
+        $sign = Dever::input('sign');
+        if ($sign) {
+            $sign = Dever::checkLogin($sign);
+            if ($sign && isset($sign['uid']) && $sign['uid'] > 0) {
+                $user = Dever::db('store/member')->getManage(array('store_id' => $sign['uid'], 'role_id' => '1'));
+                if ($user) {
+                    $this->save($user);
+                    Dever::location('home', 'store');
+                }
+            }
+        }
+
         $admin = $this->info();
         if (!$admin) {
             return $this->location_login();
@@ -248,6 +260,11 @@ class Auth
     public function location_login()
     {
         $refer = Encrypt::encode(Dever::url());
+        $admin = $this->info();
+        if ($admin) {
+            Dever::location('home', 'store');
+        }
+        
         return Dever::location('store/login?refer=' . $refer);
     }
 

+ 71 - 0
app/store/admin/Order.php

@@ -69,6 +69,21 @@ class Order extends Core
                 if ($v['refund_status'] == 2 && $v['status'] != 8) {
                     $v['status_name'] .= '[缺货报损中]';
                 }
+                $order = array();
+                if ($v['parent_type'] == 2) {
+                    $order = Dever::db('shop/sell_order')->find($v['parent_order_id']);
+                }
+
+                if ($order && $order['uid']) {
+                    if ($order['address_id']) {
+                        $order['address'] = Dever::load('passport/address')->getOne($order['uid'], $order['address_id']);
+
+                        $v['type_info']['name'] = $order['address']['contact'];
+                    } else {
+                        $user = Dever::db('passport/user')->find($order['uid']);
+                        $v['type_info']['name'] = $user['username'];
+                    }
+                }
 
         		$html .= '<tr><td><input type="checkbox" name="mul_where_id[]" class="checkbox-checkall-list" lay-ignore value="'.$v['id'].'"/></td><td>'.$v['order_num'].'</td><td>'.$v['operdate'].'</td><td>'.$v['type_info']['name'].'</td><td>'.$ps_date.'</td><td>'.$v['num'].'</td><td>'.$v['status_name'].'</td><td>'.$button.'</td></tr>';
         	}
@@ -138,6 +153,7 @@ class Order extends Core
     public function send_api()
     {
     	$input = Dever::input();
+        $update = array();
 
     	$order_id = Dever::input('update_where_id');
 
@@ -145,6 +161,35 @@ class Order extends Core
     	$info = Dever::db('shop/buy_order_ps')->find($where);
 
     	$update = $where;
+        foreach ($input as $k => $v) {
+            if (strpos($k, '_c_') !== false) {
+                if ($v == 'null') {
+                    $v = '';
+                }
+                $temp = explode('_c_', $k);
+                $k = str_replace('update_', '', $temp[0]);
+                if (!isset($c[$k])) {
+                    $c[$k] = array();
+                }
+                if (strpos($temp[1], '_i_') !== false) {
+                    $temp = explode('_i_', $temp[1]);
+
+                    if (!isset($c[$k][$temp[1]])) {
+                        $c[$k][$temp[1]] = 0;
+                    } else {
+                        $c[$k][$temp[1]]++;
+                    }
+
+                    $num = $c[$k][$temp[1]];
+
+                    $update[$k][$num][$temp[1]] = $v;
+                }
+            }
+        }
+        if (isset($update['service'])) {
+            $update['service'] = Dever::array_encode($update['service']);
+        }
+        /*
     	$update['service_id'] = $input['update_service_id'];
     	$update['order_num'] = $input['update_order_num'];
         $update['num'] = $input['update_num'];
@@ -153,6 +198,7 @@ class Order extends Core
     	$update['zl'] = $input['update_zl'];
     	$update['tj'] = $input['update_tj'];
     	$update['price'] = $input['update_price'];
+        */
     	$update['cdate'] = $input['update_cdate'];
     	if ($info) {
     		$update['where_id'] = $info['id'];
@@ -162,6 +208,31 @@ class Order extends Core
     	}
     	Dever::db('shop/buy_order')->update(array('status' => 4, 'where_id' => $update['order_id']));
 
+        # 检测是否是关联订单
+        $order = Dever::db('shop/buy_order')->find($update['order_id']);
+        if ($order && $order['parent_type'] > 1) {
+            $data = Dever::db('shop/buy_order')->find(array('status' => 3, 'parent_type' => $order['parent_type'], 'parent_order_id' => $order['parent_order_id']));
+
+            if (!$data) {
+                # 更改关联订单状态
+                if ($order['parent_type'] == 2) {
+                    Dever::db('shop/sell_order')->update(array('where_id' => $order['parent_order_id'], 'status' => 4));
+
+                    $ps_info = Dever::db('shop/buy_order_ps')->getData(array('order_id' => $where['order_id']));
+
+                    if ($ps_info) {
+                        $sell_order = array('id' => $order['parent_order_id']);
+                        foreach ($ps_info as $k => $v) {
+                            $v['service'] = Dever::array_decode($v['service']);
+                            foreach ($v['service'] as $k1 => $v1) {
+                                Dever::load('shop/lib/sell')->updatePs($sell_order, 2, $v1['service_id'], $v1['order_num']);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
     	return 'reload';
     }
 

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
app/store/assets/pc/html/order_send.html


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
app/store/assets/pc/html/order_tui.html


+ 1 - 0
app/store/database/info.php

@@ -336,6 +336,7 @@ return array
     (
         'list_button' => array
         (
+            'new' => array('仓库管理', '"home?sign=".Dever::login({id})', 'store'),
             //'location' => array('商品设置', Dever::url('lib/set.home', 'store')),
             //'add' => array('设置库存清单', '"info&where_id={id}&col=goods&oper_save_jump=info&oper_table=info&oper_parent=info"'),
 

+ 14 - 1
app/store/database/member.php

@@ -141,6 +141,19 @@ return array
 
     'request' => array
     (
-        
+        'getManage' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'store_id' => 'yes',
+                'name' => array('yes', 'like'),
+                'role_id' => array('yes', 'like'),
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'order' => array('id' => 'asc'),
+            'col' => '*',
+        ),
     ),
 );

Неке датотеке нису приказане због велике количине промена