Browse Source

Merge branch 'version1.5' of wugg/phpstock into master-online

1
wugg 2 years ago
parent
commit
6f7c1ad053

+ 53 - 31
app/admin/controller/Data.php

@@ -363,7 +363,6 @@ class Data extends BaseController
         ];
 
         //部门销售指标
-        //数据在结算库invoice,连接配置信息待更新
         $sale_indicators = Db::name('depart_tips')
             ->field('id,total_tips,depart_item department')
             ->where(['year' => date('Y'), 'month' => date('n')])
@@ -373,13 +372,11 @@ class Data extends BaseController
         $da = [];
         //计算完成率
         foreach ($sale_indicators as $value) {
-
             if (isset($sales_volume[$value['department']]['sales_volume'])) {
                 $value['finish'] = $sales_volume[$value['department']]['sales_volume'];
                 $value['finish_rate'] = round(($value['finish'] / $value['total_tips']) * 100, 5);
                 $da[] = $value;
             } else continue;
-
         }
 
         //按照完成率排序
@@ -397,20 +394,29 @@ class Data extends BaseController
     //9.转单率-今日
     public function orderTransferRateToday()
     {
-        $consulting = Db::name('sale')
-            ->alias('s')
-            ->leftJoin('depart_user u', 'u.uid=s.apply_id AND u.is_del=0')
-            ->where(['s.order_type' => 3, 's.is_del' => 0])//order_type==3 咨询采反
-            ->whereDay('s.addtime')
-            ->group('u.itemid')
-            ->column('count(s.id) consulting', 'u.itemid');
 
+        //当天所有的咨询单
+        $temp_sql = Db::name('consult_info')
+            ->field('zxNo')
+            ->where(['is_del' => 0])
+            ->whereDay('addtime')
+            ->buildSql();
+
+        //转单成功的数据
+        $consulting = Db::name('consult_info')
+            ->alias('ci')
+            ->where(['ci.status' => 5, 'ci.is_del' => 0])//status==5 成功转单
+            ->where('ci.zxNo IN '.$temp_sql)
+            ->leftJoin('consult_order co', 'co.zxNo=ci.zxNo AND co.is_del=0')
+            ->group('co.depart')
+            ->column('count(ci.id) total', 'co.depart');
+
+        //处理全部数据
         $rs = Db::name('consult_order')
             ->alias('c')
             ->field('count(c.id) total,c.depart companyId,i.name companyName')
             ->leftJoin('company_item i', 'i.id=c.depart AND i.is_del=0')
-            ->where(['c.is_del' => 0])
-            ->whereDay('c.addtime')
+            ->where('c.zxNo IN '.$temp_sql)
             ->group('c.depart')
             ->append(['transfer_rate'])
             ->withAttr('transfer_rate', function ($val, $data) use ($consulting) {
@@ -427,20 +433,29 @@ class Data extends BaseController
     //9.转单率-本月
     public function orderTransferRateMonth()
     {
-        $consulting = Db::name('sale')
-            ->alias('s')
-            ->leftJoin('depart_user u', 'u.uid=s.apply_id AND u.is_del=0')
-            ->where(['s.order_type' => 3, 's.is_del' => 0])//order_type==3 咨询采反
-            ->whereMonth('s.addtime')
-            ->group('u.itemid')
-            ->column('count(s.id) consulting', 'u.itemid');
 
+        //当天所有的咨询单
+        $temp_sql = Db::name('consult_info')
+            ->field('zxNo')
+            ->where(['is_del' => 0])
+            ->whereMonth('addtime')
+            ->buildSql();
+
+        //转单成功的数据
+        $consulting = Db::name('consult_info')
+            ->alias('ci')
+            ->where(['ci.status' => 5, 'ci.is_del' => 0])//status==5 成功转单
+            ->where('ci.zxNo IN '.$temp_sql)
+            ->leftJoin('consult_order co', 'co.zxNo=ci.zxNo AND co.is_del=0')
+            ->group('co.depart')
+            ->column('count(ci.id) total', 'co.depart');
+
+        //处理全部数据
         $rs = Db::name('consult_order')
             ->alias('c')
             ->field('count(c.id) total,c.depart companyId,i.name companyName')
             ->leftJoin('company_item i', 'i.id=c.depart AND i.is_del=0')
-            ->where(['c.is_del' => 0])
-            ->whereMonth('c.addtime')
+            ->where('c.zxNo IN '.$temp_sql)
             ->group('c.depart')
             ->append(['transfer_rate'])
             ->withAttr('transfer_rate', function ($val, $data) use ($consulting) {
@@ -458,20 +473,28 @@ class Data extends BaseController
     public function orderTransferRateYear()
     {
 
-        $consulting = Db::name('sale')
-            ->alias('s')
-            ->leftJoin('depart_user u', 'u.uid=s.apply_id AND u.is_del=0')
-            ->where(['s.order_type' => 3, 's.is_del' => 0])//order_type==3 咨询采反
-            ->whereYear('s.addtime', date('Y'))
-            ->group('u.itemid')
-            ->column('count(s.id) consulting', 'u.itemid');
+        //当天所有的咨询单
+        $temp_sql = Db::name('consult_info')
+            ->field('zxNo')
+            ->where(['is_del' => 0])
+            ->whereYear('addtime')
+            ->buildSql();
+
+        //转单成功的数据
+        $consulting = Db::name('consult_info')
+            ->alias('ci')
+            ->where(['ci.status' => 5, 'ci.is_del' => 0])//status==5 成功转单
+            ->where('ci.zxNo IN '.$temp_sql)
+            ->leftJoin('consult_order co', 'co.zxNo=ci.zxNo AND co.is_del=0')
+            ->group('co.depart')
+            ->column('count(ci.id) total', 'co.depart');
 
+        //处理全部数据
         $rs = Db::name('consult_order')
             ->alias('c')
             ->field('count(c.id) total,c.depart companyId,i.name companyName')
             ->leftJoin('company_item i', 'i.id=c.depart AND i.is_del=0')
-            ->where(['c.is_del' => 0])
-            ->whereYear('c.addtime', date('Y'))
+            ->where('c.zxNo IN '.$temp_sql)
             ->group('c.depart')
             ->append(['transfer_rate'])
             ->withAttr('transfer_rate', function ($val, $data) use ($consulting) {
@@ -482,7 +505,6 @@ class Data extends BaseController
             ->toArray();
 
         return app_show(0, '请求成功', $rs);
-
     }
 
 

+ 2 - 0
app/admin/controller/Good.php

@@ -770,6 +770,8 @@ class Good extends Base
         }
         return app_show(0,"获取成功",$data);
     }
+
+    //库存概况
     public function loglist(){
         $page = isset($this->post['page']) && $this->post['page']!==""? intval($this->post['page']) :"1";
         $size = isset($this->post['size']) && $this->post['size']!==""? intval($this->post['size']) :"10";

+ 4 - 5
app/admin/controller/OrderImport.php

@@ -267,7 +267,7 @@ class OrderImport extends Base
             'contactor',
             'mobile',
             'addr',
-            'addr_code',
+            'addr_code' => '',
             'token'
         ], 'post', 'trim');
 
@@ -285,7 +285,6 @@ class OrderImport extends Base
             'contactor' => 'require',
             'mobile' => 'require',
             'addr' => 'require',
-            'addr_code' => 'require',
         ]);
 
         if (!$val->check($param)) return error_show(1004, $val->getError());
@@ -627,13 +626,13 @@ class OrderImport extends Base
 
         $platform_id = $this->request->post('platform_id/d', 0, 'trim');
 
-        $where=['ps.is_del'=>0];
-        if($platform_id !=0) $where['ps.platform_id']=$platform_id;
+        $where = ['ps.is_del' => 0];
+        if ($platform_id != 0) $where['ps.platform_id'] = $platform_id;
 
         $list = Db::name('platform_source')
             ->alias('ps')
             ->field('ps.id,ps.platform_id,ps.source,p.platform_name')
-            ->leftJoin('platform p','p.id=ps.platform_id AND p.is_del=0')
+            ->leftJoin('platform p', 'p.id=ps.platform_id AND p.is_del=0')
             ->where($where)
             ->order('ps.id', 'desc')
             ->select()

+ 1 - 1
app/admin/controller/Purch.php

@@ -315,7 +315,7 @@ class Purch extends Base
         if (!empty($addr)) {
             foreach ($addr as &$vv){
                 $temp = explode(',', $vv['addr_code']);
-                $temp_ = GetAddr(json_encode(['provice_code' => $temp[0], 'city_code' => $temp[1], 'area_code' => $temp[2]]));
+                $temp_ = GetAddr(json_encode(['provice_code' => isset($temp[0]) ? $temp[0] : '', 'city_code' => isset($temp[1]) ? $temp[1] : '', 'area_code' => isset($temp[2]) ? $temp[2] : '']));
                 $vv['addr_code'] = $temp_ . $vv['addr'];
             }
         }else $addr=[];

+ 284 - 0
app/admin/controller/Report.php

@@ -909,4 +909,288 @@ class Report extends Base
 
     }
 
+    //【六、退货流水报表】列表
+    public function SaleReturnList()
+    {
+        $param = $this->request->only([
+            'token',
+            'start_date' => '',
+            'end_date' => '',
+            'page' => 1,
+            'size' => 15,
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date'
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $where = [['s.is_del', '=', 0]];
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['s.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+
+        $count = Db::name('sale_return')
+            ->alias('s')
+            ->where($where)
+            ->leftJoin('order_num on', 'on.orderCode=s.orderCode')
+            ->leftJoin('purchease_order po', 'po.cgdNo=on.cgdNo AND po.is_del=0')
+            ->leftJoin('result_info ri', 'ri.result_code=s.error_code AND ri.is_del=0')
+            ->count('s.id');
+
+        $list = Db::name('sale_return')
+            ->alias('s')
+            ->field('s.returnCode,s.addtime,po.cgdNo,po.supplier_name,po.good_name,po.good_num,po.cgder,s.num,on.send_num,ri.result,s.is_th')
+            ->where($where)
+            ->leftJoin('order_num on', 'on.orderCode=s.orderCode')
+            ->leftJoin('purchease_order po', 'po.cgdNo=on.cgdNo AND po.is_del=0')
+            ->leftJoin('result_info ri', 'ri.result_code=s.error_code AND ri.is_del=0')
+            ->page($param['page'], $param['size'])
+            ->select()
+            ->toArray();
+
+        return app_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+
+    }
+
+    //【六、退货流水报表】导出
+    public function SaleReturnExport()
+    {
+        $param = $this->request->only([
+            'token',
+            'start_date' => '',
+            'end_date' => ''
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date'
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $where = [['s.is_del', '=', 0]];
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['s.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+
+        $all_is_th = [0 => '不可以', 1 => '可以'];
+        $list = Db::name('sale_return')
+            ->alias('s')
+            ->field('s.returnCode 退货单号,s.addtime 退货时间,po.cgdNo 采购单编号,po.supplier_name 供应商名称,po.good_name 产品名称,po.good_num 购买数量,po.cgder 采购员,s.num 退货数量,on.send_num 已发货数量,ri.result 退货原因,s.is_th 供应商是否可以退货')
+            ->where($where)
+            ->leftJoin('order_num on', 'on.orderCode=s.orderCode')
+            ->leftJoin('purchease_order po', 'po.cgdNo=on.cgdNo AND po.is_del=0')
+            ->leftJoin('result_info ri', 'ri.result_code=s.error_code AND ri.is_del=0')
+            ->withAttr('供应商是否可以退货', function ($val) use ($all_is_th) {
+                return isset($all_is_th[$val]) ? $all_is_th[$val] : '';
+            })
+            ->select()
+            ->toArray();
+
+        if (empty($list)) $list[] = '没有可供导出的数据';
+
+        $headerArr = array_keys($list[0]);
+        excelSave('退货流水报表' . date('YmdHis'), $headerArr, $list);
+
+    }
+
+    //【七、产品报表】1.产品上线报表_列表
+    public function GoodOnlineList()
+
+    {
+        $param = $this->request->only([
+            'token',
+            'creater' => '',
+            'supplier_name' => '',
+            'start_date' => '',
+            'end_date' => '',
+            'page' => 1,
+            'size' => 15,
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date'
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $where = [['s.is_del', '=', 0], ['gp.exam_status', '=', 6]]; //exam_status==6 上线成功
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['gp.online_time', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];//当上面状态确定为exam_status==6时,上线时间也可以取 updatetime
+        if ($param['creater'] != '') $where[] = ['gb.creater', 'like', '%' . $param['creater'] . '%'];
+        if ($param['supplier_name'] != '') $where[] = ['s.name', 'like', '%' . $param['supplier_name'] . '%'];
+
+        $count = Db::name('good_platform')
+            ->alias('gp')
+            ->where($where)
+            ->leftJoin('good_basic gb', 'gb.spuCode=gp.spuCode AND gb.is_del=0')
+            ->leftJoin('brand b', 'b.id=gb.brand_id AND b.is_del=0')
+            ->leftJoin('supplier s', 's.code=gb.supplierNo AND s.is_del=0')
+            ->count('gp.id');
+
+        $list = Db::name('good_platform')
+            ->alias('gp')
+            ->field('gb.creater,gp.skuCode,gp.spuCode,gb.good_name,b.brand_name,"" good_model,s.name,gb.tax,gb.nake_price,gp.online_time')
+            ->where($where)
+            ->leftJoin('good_basic gb', 'gb.spuCode=gp.spuCode AND gb.is_del=0')
+            ->leftJoin('brand b', 'b.id=gb.brand_id AND b.is_del=0')
+            ->leftJoin('supplier s', 's.code=gb.supplierNo AND s.is_del=0')
+            ->withAttr('good_model', function ($val, $data) {
+                return Db::name('good_spec')
+                    ->alias('gp')
+                    ->field('')
+                    ->leftJoin('specs s', 's.id=gp.spec_id AND s.is_del=0')
+                    ->leftJoin('spec_value sv', 'sv.id=gp.spec_value_id AND s.is_del=0')
+                    ->where([
+                        'gp.spuCode' => $data['spuCode'],
+                        'gp.is_del' => 0,
+                        's.spec_name' => '型号',
+                    ])
+                    ->value('sv.spec_value', '');
+            })
+            ->page($param['page'], $param['size'])
+            ->select()
+            ->toArray();
+
+        return app_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+
+    }
+
+    //【七、产品报表】1.产品上线报表_导出
+    public function GoodOnlineExport()
+    {
+        $param = $this->request->only([
+            'token',
+            'creater' => '',
+            'supplier_name' => '',
+            'start_date' => '',
+            'end_date' => ''
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date'
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $where = [['s.is_del', '=', 0], ['gp.exam_status', '=', 6]]; //exam_status==6 上线成功
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['gp.online_time', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+        if ($param['creater'] != '') $where[] = ['gb.creater', 'like', '%' . $param['creater'] . '%'];
+        if ($param['supplier_name'] != '') $where[] = ['s.name', 'like', '%' . $param['supplier_name'] . '%'];
+
+        $list = Db::name('good_platform')
+            ->alias('gp')
+            ->field('gb.creater 采购维护人,gp.skuCode 产品编号skuCode,gp.spuCode 产品编号spuCode,gb.good_name 产品名称,b.brand_name 品牌名称,"" 产品型号,s.name 供应商名称,gb.tax 税点,gb.nake_price 成本价合计,gp.online_time 上线时间')
+            ->where($where)
+            ->leftJoin('good_basic gb', 'gb.spuCode=gp.spuCode AND gb.is_del=0')
+            ->leftJoin('brand b', 'b.id=gb.brand_id AND b.is_del=0')
+            ->leftJoin('supplier s', 's.code=gb.supplierNo AND s.is_del=0')
+            ->withAttr('产品型号', function ($val, $data) {
+                return Db::name('good_spec')
+                    ->alias('gp')
+                    ->field('')
+                    ->leftJoin('specs s', 's.id=gp.spec_id AND s.is_del=0')
+                    ->leftJoin('spec_value sv', 'sv.id=gp.spec_value_id AND s.is_del=0')
+                    ->where([
+                        'gp.spuCode' => $data['产品编号spuCode'],
+                        'gp.is_del' => 0,
+                        's.spec_name' => '型号',
+                    ])
+                    ->value('sv.spec_value', '');
+            })
+            ->select()
+            ->toArray();
+        halt($list);
+        if (empty($list)) $list[] = '没有可供导出的数据';
+
+        $headerArr = array_keys($list[0]);
+        excelSave('产品上线报表' . date('YmdHis'), $headerArr, $list);
+
+    }
+
+    //【七、产品报表】2.产品下线报表_列表
+    public function GoodOfflineList()
+    {
+        $param = $this->request->only([
+            'token',
+            'creater' => '',
+            'supplier_name' => '',
+            'start_date' => '',
+            'end_date' => '',
+            'page' => 1,
+            'size' => 15,
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date'
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $where = [['s.is_del', '=', 0], ['gp.exam_status', '=', 8]]; //exam_status==8 下线成功
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['gp.updatetime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+        if ($param['creater'] != '') $where[] = ['gb.creater', 'like', '%' . $param['creater'] . '%'];
+        if ($param['supplier_name'] != '') $where[] = ['s.name', 'like', '%' . $param['supplier_name'] . '%'];
+
+        $count = Db::name('good_platform')
+            ->alias('gp')
+            ->where($where)
+            ->leftJoin('good_basic gb', 'gb.spuCode=gp.spuCode AND gb.is_del=0')
+            ->leftJoin('supplier s', 's.code=gb.supplierNo AND s.is_del=0')
+            ->count('gp.id');
+
+        $list = Db::name('good_platform')
+            ->alias('gp')
+            ->field('gp.updatetime,gb.creater,gp.skuCode,gp.spuCode,gb.good_name,s.name')
+            ->where($where)
+            ->leftJoin('good_basic gb', 'gb.spuCode=gp.spuCode AND gb.is_del=0')
+            ->leftJoin('supplier s', 's.code=gb.supplierNo AND s.is_del=0')
+            ->page($param['page'], $param['size'])
+            ->select()
+            ->toArray();
+
+        return app_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+
+    }
+
+    //【七、产品报表】2.产品下线报表_导出
+    public function GoodOfflineExport()
+    {
+        $param = $this->request->only([
+            'token',
+            'creater' => '',
+            'supplier_name' => '',
+            'start_date' => '',
+            'end_date' => ''
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date'
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $where = [['s.is_del', '=', 0], ['gp.exam_status', '=', 8]]; //exam_status==8 下线成功
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['gp.updatetime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+        if ($param['creater'] != '') $where[] = ['gb.creater', 'like', '%' . $param['creater'] . '%'];
+        if ($param['supplier_name'] != '') $where[] = ['s.name', 'like', '%' . $param['supplier_name'] . '%'];
+
+        $list = Db::name('good_platform')
+            ->alias('gp')
+            ->field('gp.updatetime 产品下线时间,gb.creater 采购维护人,gp.skuCode 产品编号skuCode,gp.spuCode 产品编号spuCode,gb.good_name 产品名称,s.name 供应商名称')
+            ->where($where)
+            ->leftJoin('good_basic gb', 'gb.spuCode=gp.spuCode AND gb.is_del=0')
+            ->leftJoin('supplier s', 's.code=gb.supplierNo AND s.is_del=0')
+            ->select()
+            ->toArray();
+
+        if (empty($list)) $list[] = '没有可供导出的数据';
+
+        $headerArr = array_keys($list[0]);
+        excelSave('产品下线报表' . date('YmdHis'), $headerArr, $list);
+
+    }
+
 }

+ 39 - 32
app/admin/controller/Sale.php

@@ -96,32 +96,18 @@ class Sale extends Base
             }
             $origin_price = 0;
         }else{
-            $origin = Db::name("good_nake")->where([["spuCode","=",$spuCode],["min_num","<=",$good_num],["is_del","=",0]])->order("min_num desc")->find();
-            if($origin==false){
-                return error_show(1003,"未找到相关阶梯成本价格");
+            if($is_activity==0){
+                $origin = Db::name("good_nake")->where([["spuCode","=",$spuCode],["min_num","<=",$good_num],["is_del","=",0]])->order("min_num desc")->find();
+                if($origin==false){
+                    return error_show(1003,"未找到相关阶梯成本价格");
+                }
+                $origin_price = $origin['nake_total'];
             }
-            $origin_price = $origin['nake_total'];
         }
 
-        $sale_price = isset($this->post['good_price'])&&$this->post['good_price']!="" ? floatval($this->post['good_price']):0;
+        $sale_price = isset($this->post['good_price'])&&$this->post['good_price']!=="" ? floatval($this->post['good_price']):'';
         $ct['cgd_gold_price']=0;
-        if($goodtype==1){
-            $good = Db::name("good_ladder")->where(["skuCode"=>$skuCode,"is_del"=>0,"status"=>1])->where([["min_num","<=",$good_num]])->order("min_num desc")->find();
-            if($good==false){
-                return error_show(1003,"未找到相关阶梯价格");
-            }
-            $sale_price = $good['sale_price'];
-            if($ct['is_gold_price']==1 && $is_stock!=1){
-                $gold = Db::name("gold_price1")
-                    ->field('id,price')
-                    ->where(["type" => $ct['noble_metal'], "is_del" => 0, "status" => 1])
-                    ->order("addtime desc")
-                    ->find();
-
-                //$saleprice(最终售价) = (打样费/购买数量 + 开模费/购买数量 + 商品重量* 最新金价 + 工艺费* 商品重量+包装费+加标费+证书费+产品裸价+物流费)/(1-成本售价/100);
-                $sale_price = $ct['demo_fee'] / $good_num + $ct['open_fee'] / $good_num + $ct['noble_weight'] * $gold["price"] + $good['cost_fee'] * $ct['noble_weight'] + $origin['package_fee'] + $origin['mark_fee'] + $origin['cert_fee'] + $origin['nake_fee'] + $origin['delivery_fee'];
-                $ct['cgd_gold_price']=$gold["price"];
-            }
+        if($goodtype==1 ){
             if($is_activity==1){
                 $act = Db::name("activity_info")->alias("a")->leftJoin("good_activity b","a.activity_code=b.activity_code")
                     ->where(["a.skuCode"=>$skuCode,"a.activity_code"=>$actcode,"a.is_del"=>0,"a.status"=>1,"b.status"=>6,"b.is_del"=>0])
@@ -135,8 +121,30 @@ class Sale extends Base
                 if($act['activity_stock']<$good_num){
                     return error_show(1003,"商品活动库存剩余{$act['activity_stock']}");
                 }
-                $sale_price=$act['activity_price'];
+                $sale_price = $sale_price!==""?$sale_price:$act['activity_price'];
+                $origin_price = $act['cost_price'];
+            }else{
+                $good = Db::name("good_ladder")->where(["skuCode"=>$skuCode,"is_del"=>0,"status"=>1])->where([["min_num","<=",$good_num]])->order("min_num desc")->find();
+                if($good==false){
+                    return error_show(1003,"未找到相关阶梯价格");
+                }
+                $sale_price = $sale_price!==""?$sale_price: $good['sale_price'];
+                if($ct['is_gold_price']==1 && $is_stock!=1){
+                    $gold = Db::name("gold_price1")
+                        ->field('id,price')
+                        ->where(["type" => $ct['noble_metal'], "is_del" => 0, "status" => 1])
+                        ->order("addtime desc")
+                        ->find();
+
+                    //$saleprice(最终售价) = (打样费/购买数量 + 开模费/购买数量 + 商品重量* 最新金价 + 工艺费* 商品重量+包装费+加标费+证书费+产品裸价+物流费)/(1-成本售价/100);
+                    $sale_price = $sale_price!==""?$sale_price:($ct['demo_fee'] / $good_num + $ct['open_fee'] / $good_num
+                        + $ct['noble_weight'] * $gold["price"] + $good['cost_fee'] * $ct['noble_weight'] + $origin['package_fee'] + $origin['mark_fee'] + $origin['cert_fee'] + $origin['nake_fee'] + $origin['delivery_fee']);
+                    $ct['cgd_gold_price']=$gold["price"];
+                }
             }
+
+        }else{
+            $sale_price=0;
         }
         $cgd=[
             "supplierNo"=>$ct['supplierNo'],
@@ -287,7 +295,7 @@ class Sale extends Base
                     foreach ($addrlist as $value){
                         $temp=[];
                         $addrs=[];
-                        if($value['addr_code']!==''&&is_array($value['addr_code'])){
+                        if($value['addr_code']!==''&&is_array($value['addr_code'])&&!empty($value['addr_code'])){
                             $addrs['provice_code'] = $value['addr_code'][0];
                             $addrs['city_code'] = $value['addr_code'][1];
                             $addrs['area_code'] = $value['addr_code'][2];
@@ -564,7 +572,7 @@ class Sale extends Base
             foreach ($addrlist as $value){
                 $temp=[];
                 $addrs=[];
-                if($value['addr_code']!==''&&is_array($value['addr_code'])){
+                if($value['addr_code']!==''&&is_array($value['addr_code'])&&!empty($value['addr_code'])){
                     $addrs['provice_code'] = $value['addr_code'][0];
                     $addrs['city_code'] = $value['addr_code'][1];
                     $addrs['area_code'] = $value['addr_code'][2];
@@ -973,7 +981,7 @@ class Sale extends Base
                         foreach ($va as $value){
                             $temp=[];
                             $addrs=[];
-                            if($value['addr_code']!==''&&is_array($value['addr_code'])){
+                            if($value['addr_code']!==''&&is_array($value['addr_code'])&&!empty($value['addr_code'])){
                                 $addrs['provice_code'] = $value['addr_code'][0];
                                 $addrs['city_code'] = $value['addr_code'][1];
                                 $addrs['area_code'] = $value['addr_code'][2];
@@ -1417,7 +1425,7 @@ class Sale extends Base
                 foreach ($data['addrlist'] as $value) {
                     $temp = [];
                     $addrs = [];
-                    if ($value['addr_code'] !== '' && is_array($value['addr_code'])) {
+                    if ($value['addr_code'] !== '' && is_array($value['addr_code'])&&!empty($value['addr_code'])) {
                         $addrs['provice_code'] = $value['addr_code'][0];
                         $addrs['city_code'] = $value['addr_code'][1];
                         $addrs['area_code'] = $value['addr_code'][2];
@@ -1668,7 +1676,7 @@ class Sale extends Base
                     foreach ($data['addrlist'] as $value) {
                         $temp = [];
                         $addrs = [];
-                        if ($value['addr_code'] !== '' && is_array($value['addr_code'])) {
+                        if ($value['addr_code'] !== '' && is_array($value['addr_code'])&&!empty($value['addr_code'])) {
                             $addrs['provice_code'] = $value['addr_code'][0];
                             $addrs['city_code'] = $value['addr_code'][1];
                             $addrs['area_code'] = $value['addr_code'][2];
@@ -2114,7 +2122,7 @@ class Sale extends Base
             foreach ($fo as $value) {
                 $value['addr_info'] = "";
                 $value['send_num'] = 0;
-                if ($value['addr_code'] != "") {
+                if ($value['addr_code'] != ""&&!empty($value['addr_code'])) {
                     $place = ["provice_code"=>"","city_code"=>"","area_code"=>""];
                     list($place['provice_code'],$place['city_code'],$place['area_code'])=explode(",",$value['addr_code']);
                     $addr = GetAddr(json_encode($place));
@@ -3265,7 +3273,6 @@ class Sale extends Base
                                 }
 
                             }
-
                         }
 
                     $datainfo = Db::name('order_out')->insert($data,true);
@@ -3759,7 +3766,7 @@ class Sale extends Base
         $status = [0 => '待发货', 1 => '待库管发货', 2 => '已发货待收货', 3 => '已收货', 4 => '已全部退货'];
         $list = Db::name("order_out")
             ->alias('a')
-            ->field('"" as 序号,a.addtime as 创建时间,po.cgdNo as 采购单编号,po.status as 采购单状态,po.cgder as 采购员,b.orderCode as 确认单号,b.addtime as 确认单时间,b.good_code as 产品编号,b.good_name as 产品名称,"" as 规格,"" as 单位,wi.name as 供应商名称,s.code as 供应商编号,po.nake_fee as 裸价,a.post_fee as 物流费,b.send_type as 发货方式,po.good_price as 采购单价,b.remark as 确认单备注,po.good_num as 采购数量,po.total_fee as 采购货款,a.send_num 发货数量,oa.contactor as 收货人,oa.mobile as 联系方式,oa.addr as 收货地址,oa.arrive_time as 到货时间,a.outCode as 发货申请单号,po.order_type,"" 发货申请单物流单号,"" 发货申请单物流费用,"" 发货申请单备注')
+            ->field('"" as 序号,a.addtime as 创建时间,po.cgdNo as 采购单编号,po.status as 采购单状态,po.cgder as 采购员,b.orderCode as 确认单号,b.addtime as 确认单时间,b.good_code as 产品编号,b.good_name as 产品名称,"" as 规格,"" as 单位,wi.name as 供应商名称,s.code as 供应商编号,po.nake_fee as 裸价,a.post_fee as 物流费,b.send_type as 发货方式,po.good_price as 采购单价,b.remark as 确认单备注,po.good_num as 采购数量,po.total_fee as 采购货款,a.send_num 发货数量,oa.contactor as 收货人,oa.mobile as 联系方式,oa.addr as 收货地址,oa.arrive_time as 到货时间,a.outCode as 发货申请单号,po.order_type,b.platform_order 平台订单号,a.post_name 发货申请单物流公司,a.post_code 发货申请单物流单号,a.post_fee 发货申请单物流费用,a.remark 发货申请单备注')
             ->whereIn('a.outCode', $outCodes)
             ->order("a.addtime desc")
             ->withAttr('序号', function () use (&$i) {
@@ -3814,7 +3821,7 @@ class Sale extends Base
             unset($value['order_type']);
         }
 
-        if(empty($list)) $list[]='没有可供导出的数据';
+        if (empty($list)) $list[] = '没有可供导出的数据';
 
         $headerArr = array_keys($list[0]);
         excelSave('发货申请单导出' . date('YmdHis'), $headerArr, $list);

+ 6 - 0
app/admin/route/app.php

@@ -501,6 +501,12 @@ Route::rule('reportorderreturnlist','admin/Report/orderReturnList');//报表-售
 Route::rule('reportorderreturnlistexport','admin/Report/orderReturnListExport');//报表-售后报表_导出
 Route::rule('reportsupplierlist','admin/Report/supplierList');//报表-供应商报表_列表
 Route::rule('reportsupplierlistexport','admin/Report/supplierListExport');//报表-供应商报表_导出
+Route::rule('reportsalereturnlist','admin/Report/SaleReturnList');//报表-退货流水报表_列表
+Route::rule('reportsalereturnexport','admin/Report/SaleReturnExport');//报表-退货流水报表_导出
+Route::rule('reportgoodonlinelist','admin/Report/GoodOnlineList');//报表-产品报表-产品上线报表_列表
+Route::rule('reportgoodonlineexport','admin/Report/GoodOnlineExport');//报表-产品报表-产品上线报表_导出
+Route::rule('reportgoodofflinelist','admin/Report/GoodOfflineList');//报表-产品报表-产品下线报表_列表
+Route::rule('reportgoodofflineexport','admin/Report/GoodOfflineExport');//报表-产品报表-产品下线报表_导出
 
 //数据看板
 Route::rule('datatodaysalesvolume','admin/Data/todaySalesVolume');//1.今日销量

+ 11 - 7
app/command/ImportOrderFromCAnalysisData.php

@@ -262,14 +262,18 @@ class ImportOrderFromCAnalysisData extends Command
             //省市区
             if ($rs['addr']) {
                 $p_c_a = get_address($rs['addr']);
-                $province = Db::name('province')->whereLike('name', '%' . $p_c_a['province'] . '%')->value('province_code');
-                $city = Db::name('city')->whereLike('name', '%' . $p_c_a['city'] . '%')->value('city_code');
-                $area = Db::name('area')->whereLike('name', '%' . $p_c_a['district'] . '%')->value('area_code');
 
-                if (is_null($province) || is_null($city) || is_null($area)) {
-                    $update_c_data['status'] = OIFCModel::$status_wait_confirm;
-                    $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',地址解析失败' : '地址解析失败';
-                } else  $extend_insert_data['addr_code'] = implode([$province, $city, $area], ',');
+                $province = empty($p_c_a['province']) ? $p_c_a['province'] : Db::name('province')->whereLike('name', '%' . $p_c_a['province'] . '%')->value('province_code');
+                $city = empty($p_c_a['city']) ? $p_c_a['city'] : Db::name('city')->whereLike('name', '%' . $p_c_a['city'] . '%')->value('city_code');
+                $area = empty($p_c_a['district']) ? $p_c_a['district'] : Db::name('area')->whereLike('name', '%' . $p_c_a['district'] . '%')->value('area_code');
+
+                $extend_insert_data['addr_code'] = implode([$province, $city, $area], ',');
+
+//                地址非必填,能解析就解析,解析不出来就不管了
+//                if (is_null($province) || is_null($city) || is_null($area)) {
+//                    $update_c_data['status'] = OIFCModel::$status_wait_confirm;
+//                    $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',地址解析失败' : '地址解析失败';
+//                } else  $extend_insert_data['addr_code'] = implode([$province, $city, $area], ',');
             }
 
             Db::name('order_import_from_c_extend')->insertGetId($extend_insert_data);