Bläddra i källkod

销售报表优化

wufeng 2 år sedan
förälder
incheckning
1473f3ced4
1 ändrade filer med 35 tillägg och 19 borttagningar
  1. 35 19
      app/admin/controller/SaleReport.php

+ 35 - 19
app/admin/controller/SaleReport.php

@@ -576,13 +576,14 @@ class SaleReport extends Base
 //        }
 
         $list = $this->saleNotSignedExportTemp($where);
-        excelSave('未签收报表' . date('YmdHis'), ['创建人','创建人所属部门','下单时间','订单号','一级企业','二级企业','客户名称','商品名称','数量','单位','单价','金额','发货时间'], $list);
+        excelSave('未签收报表' . date('YmdHis'), ['创建人', '创建人所属部门', '下单时间', '订单号', '一级企业', '二级企业', '客户名称', '商品名称', '数量', '单位', '单价', '金额', '发货时间'], $list);
 
     }
 
 
     //针对"【一、管理报表】5.未签收报表_导出"数据量太大
-    private function saleNotSignedExportTemp(array $where=[]){
+    private function saleNotSignedExportTemp(array $where = [])
+    {
         $data = Db::name('order_out')
             ->alias('oo')
             ->field('s.apply_name 创建人,"" 创建人所属部门,s.addtime 下单时间,s.orderCode 订单号,"" 一级企业,"" 二级企业,csi.companyName 客户名称,s.good_name 商品名称,s.good_num 数量,"" 单位,s.sale_price 单价,s.total_price 金额,oo.sendtime 发货时间,csi.itemid,s.good_code,s.order_type,s.apply_id')
@@ -661,6 +662,7 @@ class SaleReport extends Base
             if ($value['order_type'] == 3 || $value['order_type'] == 4) $value['unit'] = Db::name("good_zixun")->alias('gz')->leftJoin('unit u', 'u.id=gz.good_unit')->where(["gz.spuCode" => $value['good_code'], "gz.is_del" => 0])->value('u.unit');
             else $value['unit'] = Db::name('good_basic')->alias('gb')->leftJoin('unit u', 'u.id=gb.good_unit')->where(["gb.spuCode" => $value['good_code'], "gb.is_del" => 0])->value('u.unit');
 
+            $value['is_finish'] = $value['status'] == 5 ? '已完结' : '未完结';
             $value['status'] = isset($this->all_order_return_status[$value['status']]) ? $this->all_order_return_status[$value['status']] : '';
 
             $list[] = $value;
@@ -681,7 +683,7 @@ class SaleReport extends Base
 
         $data = Db::name('order_return')
             ->alias('or')
-            ->field('or.addtime 售后时间,or.apply_name 创建人,"" 创建人部门,or.orderCode 订单号,"" 一级企业,"" 二级企业,csi.companyName 客户名称,or.good_name 商品名称,or.total_num 数量,"" 单位,s.sale_price 单价,s.total_price 金额,or.updatetime 签收时间,ri.result 异常原因,or.status 异常状态,csi.itemid,or.good_code,or.order_type,or.apply_id')
+            ->field('or.addtime 售后时间,or.apply_name 创建人,"" 创建人部门,or.orderCode 订单号,"" 一级企业,"" 二级企业,csi.companyName 客户名称,or.good_name 商品名称,or.total_num 数量,"" 单位,s.sale_price 单价,s.total_price 金额,or.updatetime 签收时间,ri.result 异常原因,or.status 异常状态,"" 是否完结,csi.itemid,or.good_code,or.order_type,or.apply_id')
             ->leftJoin('sale s', 's.orderCode=or.orderCode')
             ->leftJoin('customer_info csi', 'csi.companyNo=or.customer_code')
             ->leftJoin('order_out out', 'out.orderCode=s.orderCode')
@@ -705,6 +707,7 @@ class SaleReport extends Base
 
             $value['创建人部门'] = get_company_name_by_uid($value['apply_id']);//获取创建人的所属部门
 
+            $value['是否完结'] = $value['异常状态'] == 5 ? '已完结' : '未完结';
             $value['异常状态'] = isset($this->all_order_return_status[$value['异常状态']]) ? $this->all_order_return_status[$value['异常状态']] : '';
 
             unset($value['itemid']);
@@ -835,7 +838,7 @@ class SaleReport extends Base
 
         $data = Db::name('sale')
             ->alias('s')
-            ->field('ci.addtime,co.salesman,item.name,cb.zxNo,csi.companyName,ci.use_desc,ci.good_name,b.brand_name,ci.model,s.good_code,ci.cat_id,ci.budget_price,u.unit,ci.num,s.sale_price,ci.arrival_time,ci.is_addrs,ci.is_custom,ci.remark,ci.status,ci.bargain_code,csi.itemid')
+            ->field('ci.addtime,co.salesman,item.name,cb.infoNo,csi.companyName,ci.use_desc,ci.good_name,b.brand_name,ci.model,s.good_code,ci.cat_id,ci.budget_price,u.unit,ci.num,s.sale_price,ci.arrival_time,ci.is_addrs,ci.is_custom,ci.remark,ci.status,ci.bargain_code,csi.itemid')
             ->leftJoin('consult_bids cb', 'cb.bidNo=s.zxNo')
             ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo')
             ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo')
@@ -885,7 +888,7 @@ class SaleReport extends Base
 
         $data = Db::name('sale')
             ->alias('s')
-            ->field('ci.addtime 咨询时间,co.salesman 业务员,item.name 业务部门,cb.zxNo 咨询单号,"" 一级组织,"" 二级组织,csi.companyName 客户名称,ci.use_desc 产品用途,ci.good_name 产品名称,b.brand_name 品牌,ci.model 型号,s.good_code 产品编码,"" 一级分类,ci.cat_id,ci.budget_price 预算单价,u.unit 单位,ci.num 需求数量,"" 预算总价,s.sale_price 单价,ci.arrival_time 要求到货时间,ci.is_addrs 是否一地,ci.is_custom 定制,ci.remark 咨询备注,ci.status 竞单状态,ci.bargain_code 上次咨询单单号,csi.itemid')
+            ->field('ci.addtime 咨询时间,co.salesman 业务员,item.name 业务部门,cb.infoNo 咨询单号,"" 一级组织,"" 二级组织,csi.companyName 客户名称,ci.use_desc 产品用途,ci.good_name 产品名称,b.brand_name 品牌,ci.model 型号,s.good_code 产品编码,"" 一级分类,ci.cat_id,ci.budget_price 预算单价,u.unit 单位,ci.num 需求数量,"" 预算总价,s.sale_price 单价,ci.arrival_time 要求到货时间,ci.is_addrs 是否一地,ci.is_custom 定制,ci.remark 咨询备注,ci.status 竞单状态,ci.bargain_code 上次咨询单单号,csi.itemid')
             ->leftJoin('consult_bids cb', 'cb.bidNo=s.zxNo')
             ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo')
             ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo')
@@ -939,19 +942,21 @@ class SaleReport extends Base
             ->alias('pd')
             ->leftJoin('sale_diff sd', 'sd.cgd_diffid=pd.id')
             ->leftJoin('purchease_order po', 'po.cgdNo=pd.cgdNo')
-            ->leftJoin('business b', 'b.companyNo=po.companyNo')
-            ->leftJoin('good_basic gb', 'gb.spuCode=po.spuCode')
+            ->leftJoin('order_num on', 'on.cgdNo=pd.cgdNo')
+            ->leftJoin('sale s', 's.orderCode=on.orderCode')
+            ->leftJoin('customer_info ci', 'ci.companyNo=s.customer_code')
             ->where($where)
             ->order('pd.addtime', 'desc')
             ->count('pd.id');
 
         $data = Db::name('purchease_diff')
             ->alias('pd')
-            ->field('pd.addtime,sd.diffCode,sd.orderCode,pd.apply_name,pd.apply_id,po.addtime poaddtime,pd.good_name,b.company,gb.noble_metal,pd.good_num,pd.sale_price,pd.good_weight,pd.diff_weight,pd.diff_price,sd.status')
+            ->field('pd.addtime,sd.diffCode,sd.orderCode,pd.apply_name,pd.apply_id,po.addtime poaddtime,pd.good_name,ci.companyName,pd.good_num,pd.sale_price,pd.good_weight,pd.diff_weight,pd.diff_price,sd.status,po.order_type,po.spuCode')
             ->leftJoin('sale_diff sd', 'sd.cgd_diffid=pd.id')
             ->leftJoin('purchease_order po', 'po.cgdNo=pd.cgdNo')
-            ->leftJoin('business b', 'b.companyNo=po.companyNo')
-            ->leftJoin('good_basic gb', 'gb.spuCode=po.spuCode')
+            ->leftJoin('order_num on', 'on.cgdNo=pd.cgdNo')
+            ->leftJoin('sale s', 's.orderCode=on.orderCode')
+            ->leftJoin('customer_info ci', 'ci.companyNo=s.customer_code')
             ->where($where)
             ->page($param['page'], $param['size'])
             ->order('pd.addtime', 'desc')
@@ -961,8 +966,12 @@ class SaleReport extends Base
 
         foreach ($data as $value) {
 
+            if ($value['order_type'] == 3 || $value['order_type'] == 4) $noble_metal = Db::name("good_zixun")->where(["spuCode" => $value['spuCode'], "is_del" => 0])->value('noble_metal');
+            else $noble_metal = Db::name('good_basic')->where(['spuCode' => $value['spuCode']])->value('noble_metal');
+
+
             $value['apply_company'] = get_company_name_by_uid($value['apply_id']);
-            $value['noble_metal'] = isset($this->noble_metal[$value['noble_metal']]) ? $this->noble_metal[$value['noble_metal']] : '';
+            $value['noble_metal'] = isset($this->noble_metal[$noble_metal]) ? $this->noble_metal[$noble_metal] : '';
             $value['total_price'] = round($value['sale_price'], $value['good_num'], 2);
             $value['is_update_sale'] = isset($this->sale_diff_status[$value['status']]) ? $this->sale_diff_status[$value['status']] : '';
 
@@ -976,7 +985,6 @@ class SaleReport extends Base
     //【四、工差明细表】
     public function saleDiffExport()
     {
-
         $param = $this->request->only(['token', 'start_date' => '', 'end_date' => ''], 'post', 'trim');
 
         $where = [['pd.is_del', '=', 0]];
@@ -984,11 +992,12 @@ class SaleReport extends Base
 
         $data = Db::name('purchease_diff')
             ->alias('pd')
-            ->field('pd.addtime 发起时间,sd.diffCode 工差单号,sd.orderCode 关联确认单,pd.apply_name 创建人,"" 部门,pd.apply_id,po.addtime 确认单下单日期,pd.good_name 产品名称,b.company 客户名称,gb.noble_metal 贵金属种类,pd.good_num 下单数量,pd.sale_price 单价,"" 总额,pd.good_weight 商品总重量,pd.diff_weight 工差重量,pd.diff_price 销售工差总费用,sd.status 是否修改销售额')
+            ->field('pd.addtime 发起时间,sd.diffCode 工差单号,sd.orderCode 关联确认单,pd.apply_name 创建人,"" 部门,pd.apply_id,po.addtime 确认单下单日期,pd.good_name 产品名称,ci.companyName 客户名称,"" 贵金属种类,pd.good_num 下单数量,pd.sale_price 单价,"" 总额,pd.good_weight 商品总重量,pd.diff_weight 工差重量,pd.diff_price 销售工差总费用,sd.status 是否修改销售额,po.order_type,po.spuCode')
             ->leftJoin('sale_diff sd', 'sd.cgd_diffid=pd.id')
             ->leftJoin('purchease_order po', 'po.cgdNo=pd.cgdNo')
-            ->leftJoin('business b', 'b.companyNo=po.companyNo')
-            ->leftJoin('good_basic gb', 'gb.spuCode=po.spuCode')
+            ->leftJoin('order_num on', 'on.cgdNo=pd.cgdNo')
+            ->leftJoin('sale s', 's.orderCode=on.orderCode')
+            ->leftJoin('customer_info ci', 'ci.companyNo=s.customer_code')
             ->where($where)
             ->order('pd.addtime', 'desc')
             ->cursor();
@@ -997,12 +1006,17 @@ class SaleReport extends Base
 
         foreach ($data as $value) {
 
+            if ($value['order_type'] == 3 || $value['order_type'] == 4) $noble_metal = Db::name("good_zixun")->where(["spuCode" => $value['spuCode'], "is_del" => 0])->value('noble_metal');
+            else $noble_metal = Db::name('good_basic')->where(['spuCode' => $value['spuCode']])->value('noble_metal');
+
             $value['部门'] = get_company_name_by_uid($value['apply_id']);
-            $value['贵金属种类'] = isset($this->noble_metal[$value['贵金属种类']]) ? $this->noble_metal[$value['贵金属种类']] : '';
+            $value['贵金属种类'] = isset($this->noble_metal[$noble_metal]) ? $this->noble_metal[$noble_metal] : '';
             $value['总额'] = round($value['单价'], $value['下单数量'], 2);
             $value['是否修改销售额'] = isset($this->sale_diff_status[$value['是否修改销售额']]) ? $this->sale_diff_status[$value['是否修改销售额']] : '';
 
             unset($value['apply_id']);
+            unset($value['order_type']);
+            unset($value['spuCode']);
 
             $list[] = $value;
         }
@@ -1408,6 +1422,7 @@ class SaleReport extends Base
             ->alias('a')
             ->leftJoin("sale b", "b.orderCode=a.orderCode")
             ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("purchease_order po", "po.cgdNo=os.cgdNo")
             ->leftJoin("order_addr oa", "oa.id=a.addrid")
             ->leftJoin("depart_user u", "u.uid=a.apply_id AND u.is_del=0")
             ->leftJoin("company_item ci", "ci.id=u.itemid")
@@ -1417,9 +1432,10 @@ class SaleReport extends Base
 
         $data = Db::name('order_out')
             ->alias('a')
-            ->field('a.addtime,a.orderCode,a.sendtime,a.outCode,a.status,b.good_name,b.sale_price,a.send_num,a.apply_name,ci.name apply_company,os.cgdNo,a.post_name,a.post_code,oa.contactor,oa.mobile,oa.addr,oa.addr_code,a.remark')
+            ->field('a.addtime,a.orderCode,a.sendtime,a.outCode,a.status,b.good_name,b.sale_price,a.send_num,a.apply_name,ci.name apply_company,po.cgder,a.post_name,a.post_code,oa.contactor,oa.mobile,oa.addr,oa.addr_code,a.remark')
             ->leftJoin("sale b", "b.orderCode=a.orderCode")
             ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("purchease_order po", "po.cgdNo=os.cgdNo")
             ->leftJoin("order_addr oa", "oa.id=a.addrid")
             ->leftJoin("depart_user u", "u.uid=a.apply_id AND u.is_del=0")
             ->leftJoin("company_item ci", "ci.id=u.itemid")
@@ -1463,9 +1479,10 @@ class SaleReport extends Base
 
         $data = Db::name('order_out')
             ->alias('a')
-            ->field('a.addtime 下单日期,a.orderCode 订单编号,a.sendtime 发货时间,a.outCode 发货申请单号,a.status 发货申请单状态,b.good_name 商品名称,b.sale_price 产品单价,a.send_num 发货数量,"" 发货申请单总价,a.apply_name 申请人,ci.name 部门,os.cgdNo 采购单编号,a.post_name 快递公司,a.post_code 快递单号,oa.contactor 收货人,oa.mobile 收货电话,oa.addr 收货地址,oa.addr_code,a.remark 备注')
+            ->field('a.addtime 下单日期,a.orderCode 订单编号,a.sendtime 发货时间,a.outCode 发货申请单号,a.status 发货申请单状态,b.good_name 商品名称,b.sale_price 产品单价,a.send_num 发货数量,"" 发货申请单总价,a.apply_name 申请人,ci.name 部门,po.cgder 采购人,a.post_name 快递公司,a.post_code 快递单号,oa.contactor 收货人,oa.mobile 收货电话,oa.addr 收货地址,oa.addr_code,a.remark 备注')
             ->leftJoin("sale b", "b.orderCode=a.orderCode")
             ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("purchease_order po", "po.cgdNo=os.cgdNo")
             ->leftJoin("order_addr oa", "oa.id=a.addrid")
             ->leftJoin("depart_user u", "u.uid=a.apply_id AND u.is_del=0")
             ->leftJoin("company_item ci", "ci.id=u.itemid")
@@ -1484,7 +1501,6 @@ class SaleReport extends Base
             if (!json_decode($value['addr_code'])) {
                 $temp = explode(',', $value['addr_code']);
                 $value['addr_code'] = json_encode(['provice_code' => $temp[0] ?? '', 'city_code' => $temp[1] ?? '', 'area_code' => $temp[2] ?? '']);
-
             }
 
             $value['收货地址'] = GetAddr($value['addr_code']) . $value['收货地址'];