dever 3 years ago
parent
commit
b443a90ff9
4 changed files with 305 additions and 2 deletions
  1. 194 0
      app/mshop/lib/Out.php
  2. 1 0
      app/mshop/src/Out.php
  3. 3 2
      app/shop/database/out_order.php
  4. 107 0
      app/store/admin/Out.php

+ 194 - 0
app/mshop/lib/Out.php

@@ -0,0 +1,194 @@
+<?php
+
+namespace Mshop\Lib;
+
+use Dever;
+
+class Out
+{
+    # 采购订单列表
+    public function getList($type, $id)
+    {
+        $where['use_type'] = $type;
+        $where['use_id'] = $id;
+
+        $this->data['search_value'] = $where;
+        $this->data['search_value']['day'] = $day = Dever::input('day');
+        if ($day) {
+            $where['start'] = Dever::maketime($day . ' 00:00:00');
+            $where['end'] = Dever::maketime($day . ' 23:59:59');
+        }
+
+        $order_num = Dever::input('order_num');
+        if ($order_num) {
+            $where['order_num'] = $name;
+        }
+
+        $status = Dever::input('status');
+        if ($status) {
+            $where['status'] = $status;
+        }
+
+        $this->data['order'] = Dever::db('shop/out_order')->getAll($where);
+
+        if ($this->data['order']) {
+            foreach ($this->data['order'] as $k => $v) {
+                $this->data['order'][$k] = $this->getInfo($v);
+            }
+        }
+
+        return $this->data;
+    }
+
+    # 查看订单详情
+    public function view($type, $id)
+    {
+        $where['use_type'] = $type;
+        $where['use_id'] = $id;
+        $where['id'] = Dever::input('order_id');
+
+        $this->data = Dever::db('shop/out_order')->find($where);
+
+        if (!$this->data) {
+            Dever::alert('订单不存在');
+        }
+
+        $this->data = $this->getInfo($this->data, true);
+
+        return $this->data;
+    }
+
+    # 确认订单页面
+    public function confirm()
+    {
+        $this->goods();
+
+        return $this->data;
+    }
+
+    # 得到商品和总价
+    private function goods()
+    {
+        $goods_id = Dever::input('goods_id');
+        if (!$goods_id) {
+            Dever::alert('请传入商品');
+        }
+        $goods_id = explode(',', $goods_id);
+
+        $sku_id = Dever::input('price_id');
+        if ($sku_id) {
+            $sku_id = explode(',', $sku_id);
+        }
+        
+        $num = Dever::input('num');
+        if (!$num) {
+            Dever::alert('请传入商品数量');
+        }
+        $num = explode(',', $num);
+
+        $this->data['price'] = 0;
+        $this->data['num'] = 0;
+        $this->data['name'] = array();
+        # 计算总价格
+        foreach ($goods_id as $k => $v) {
+            $s = isset($sku_id[$k]) ? $sku_id[$k] : -1;
+            $n = isset($num[$k]) ? $num[$k] : 1;
+            $this->data['list'][$k] = Dever::load('goods/lib/info')->getPayInfo($v, $s, $n);
+            $this->data['list'][$k]['num'] = $n;
+
+            # 2是库存不足
+            $this->data['list'][$k]['ku_state'] = 1;
+
+            # 验证是否有货
+            $total = Dever::load('shop/lib/info')->checkTotal($n, $v, $this->shop_id, $s);
+
+            if ($total <= 0) {
+                $this->data['list'][$k]['ku_state'] = 2;
+                $this->data['list'][$k]['buy_num'] = 0;
+            }
+
+            if ($this->data['list'][$k]['ku_state'] == 1) {
+                $this->data['list'][$k]['buy_num'] = $n;
+                $this->data['num'] += $n;
+                $this->data['price'] += $this->data['list'][$k]['price'] * $n;
+                $this->data['name'][] = $this->data['list'][$k]['name'];
+            }
+        }
+
+        $this->data['name'] = implode(',', $this->data['name']);
+    }
+
+    # 出库下单
+    public function action_commit()
+    {
+        $info = Dever::input('info');
+        $type = Dever::input('type', 1);
+
+        $this->goods();
+        
+        $order_data['use_type'] = 1;
+        $order_data['use_id'] = $this->shop['id'];
+        $order_data['name'] = $this->data['name'];
+        $order_data['num'] = $this->data['num'];
+        $order_data['info'] = $info;
+        $order_data['type'] = $type;
+        $order_data['price'] = $this->data['price'];
+        $order_data['member_id'] = $this->uid;
+
+        $order_data['order_num'] = $this->getOrderId();
+        $id = Dever::db('shop/out_order')->insert($order_data);
+
+        if (!$id) {
+            Dever::alert('出库失败');
+        }
+
+        foreach($this->data['list'] as $k => $v) {
+            if ($v['ku_state'] == 1) {
+                $data['order_id'] = $id;
+                $data['goods_id'] = $v['id'];
+                $data['sku_id'] = $v['sku_id'];
+                $data['price'] = $v['price'] * $v['buy_num'];
+                $data['d_price'] = $v['price'];
+                $data['num'] = $v['buy_num'];
+
+                $state = Dever::db('shop/out_order_goods')->insert($data);
+                if ($state) {
+                    # 出库成功 去掉库存
+                    Dever::load('shop/lib/goods')->oper($order_data, 2, 1, array($data));
+                }
+            }
+        }
+
+        return array('order_id' => $id);
+    }
+
+    # 生成订单号
+    public function getOrderId()
+    {
+        $where['order_num'] = Dever::order('OUT');
+        $state = Dever::db('shop/out_order')->one($where);
+        if (!$state) {
+            return $where['order_num'];
+        } else {
+            return $this->getOrderId();
+        }
+    }
+
+    # 获取订单详细信息
+    private function getInfo($info, $view = false)
+    {
+        $info['goods'] = Dever::db('shop/out_order_goods')->select(array('order_id' => $info['id']));
+        $info['cdate'] = date('Y-m-d H:i', $info['cdate']);
+
+        $type = Dever::db('shop/out_order')->config['config_type'];
+        $info['type_name'] = $type[$info['type']];
+        if ($view) {
+            foreach ($info['goods'] as $k => $v) {
+                $info['goods'][$k]['info'] = Dever::load('goods/lib/info')->getPayInfo($v['goods_id'], $v['sku_id']);
+            }
+
+            $info['member'] = Dever::db('shop/member')->find($info['member_id']);
+        }
+        return $info;
+    }
+}

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

@@ -141,6 +141,7 @@ class Out extends Core
         $order_data['type'] = $type;
         $order_data['price'] = $this->data['price'];
         $order_data['member_id'] = $this->uid;
+        $order_data['status'] = 2;
 
         $order_data['order_num'] = $this->getOrderId();
         $id = Dever::db('shop/out_order')->insert($order_data);

+ 3 - 2
app/shop/database/out_order.php

@@ -10,7 +10,8 @@ $type = array
 
 $status = array
 (
-    1 => '已出库',
+    1 => '未确认',
+    2 => '已确认',
 );
 
 return array
@@ -193,7 +194,7 @@ return array
             # 匹配的正则或函数 选填项
             'option' => array
             (
-                'name' => array('yes', 'like'),
+                'order_num' => array('yes', 'like'),
                 'use_type' => 'yes',
                 'use_id' => 'yes',
                 'start' => array('yes-cdate', '>='),

+ 107 - 0
app/store/admin/Out.php

@@ -0,0 +1,107 @@
+<?php
+namespace store\Admin;
+
+use Dever;
+
+class Out extends Core
+{
+    # 订单列表
+    public function getList()
+    {
+        $data = Dever::load('mshop/lib/buy')->set(2, 1)->getList($this->id);
+
+        $html = '';
+        if ($data && $data['order']) {
+            foreach ($data['order'] as $k => $v) {
+                if ($v['ps_info']) {
+                    $ps_date = $v['ps_info']['cdate'];
+                    $ydate = $v['ps_info']['ydate'] ? $v['ps_info']['ydate'] : '-';
+                } else {
+                    $ps_date = $ydate = '-';
+                }
+                $view = Dever::url('order_view?type=3&order_id=' . $v['id'], 'store');
+
+                $send = Dever::url('order_send?id=' . $v['id'], 'store');
+
+                $button = '<a href="'.$view.'"><button type="button" class="btn btn-info btn-rounded waves-effect waves-light m-b-5 layui-btn layui-btn-xs">查看详情</button></a>';
+
+                $button .= '&nbsp;&nbsp;<a href="javascript:;" id="print_'.$v['id'].'" onclick="layer.alert(\'开发中\')"><button type="button" class="btn btn-info btn-rounded waves-effect waves-light m-b-5 layui-btn layui-btn-xs">打印订单</button></a>';
+                
+                if ($v['status'] == 4) {
+                    $url = Dever::url('admin/factory_order.action&order_id='.$v['id'], 'store');
+                    $button .= '&nbsp;&nbsp;<a href="javascript:;" onclick="load(\''.$url.'\')"><button type="button" class="btn btn-info btn-rounded waves-effect waves-light m-b-5 layui-btn layui-btn-xs">确认收货</button></a>';
+                }
+
+                if ($v['refund_status'] == 2 && $v['status'] != 8) {
+                    $v['status_name'] .= '[缺货报损中]';
+                }
+
+                $html .= '<tr><td>'.$v['order_num'].'</td><td>'.$ps_date.'</td><td>'.$v['source_info']['name'].'</td><td>'.$ydate.'</td><td>'.$v['num'].'</td><td>'.$v['status_name'].'</td><td>'.$button.'</td></tr>';
+            }
+        }
+        return $html;
+    }
+
+    # 获取列表页搜索信息
+    public function getSearch()
+    {
+        $config = array
+        (
+            array('value' => '0', 'name' => '全部'),
+            array('value' => 4, 'name' => '待收货确认'),
+            array('value' => '5,6', 'name' => '已完成'),
+            array('value' => 'refund', 'name' => '缺货与报损'),
+        );
+
+        $status = Dever::input('status');
+
+        $html = '';
+        foreach ($config as $k => $v) {
+            $selected = '';
+            if ((!$status && $k == 0) || $status == $v['value']) {
+                $selected = 'selected=""';
+            } 
+
+            $html .= '<option value="'.$v['value'].'" '.$selected.'>'.$v['name'].'</option>';
+        }
+
+        return $html;
+    }
+
+    # 获取列表页搜索信息
+    public function getService()
+    {
+        $service = Dever::db('shop/service')->select();
+        $html = '';
+        foreach ($service as $k => $v) {
+            $selected = '';
+            if ($k == 0) {
+                $selected = 'selected=""';
+            } 
+
+            $html .= '<option value="'.$v['id'].'" '.$selected.'>'.$v['name'].'</option>';
+        }
+
+        return $html;
+    }
+
+    # 获取基本信息
+    public function getConfig()
+    {
+        $data['search'] = Dever::url('factory_order', 'store');
+
+        # 确认收货
+        $data['action'] = Dever::url('admin/factory_order.action', 'store');
+        return $data;
+    }
+
+    # 确认收货
+    public function action_api()
+    {
+        $order_id = Dever::input('order_id');
+
+        Dever::load('mshop/lib/buy')->set(2,1)->finish($this->id, $order_id);
+
+        return 'reload';
+    }
+}