Преглед на файлове

报表导出:回款核销明细表,回票明细表和经营分析报表

wufeng преди 2 години
родител
ревизия
2b98bdb0e3
променени са 2 файла, в които са добавени 178 реда и са изтрити 3 реда
  1. 175 3
      app/admin/controller/Export.php
  2. 3 0
      app/admin/route/app.php

+ 175 - 3
app/admin/controller/Export.php

@@ -1,15 +1,20 @@
 <?php
 
-
 namespace app\admin\controller;
 
-
 use app\admin\BaseController;
 use think\facade\Db;
 
+
 class Export extends BaseController
 {
 
+    private $qrdType = [1 => '库存品', 2 => '非库存品', 3 => '采购反馈'];
+    private $qrdSource = [1 => '直接下单', 2 => '竞价转单', 3 => '项目转单', 4 => '平台导入', 5 => '有赞平台', 6 => '售后补换货'];
+    private $sendType = [1 => '直接发货', 2 => '延时发货'];
+    private $inv_status = [1 => '未开', 2 => '部分', 3 => '已开'];
+    private $pay_status = [1 => '未回', 2 => '部分', 3 => '已回'];
+
     //销售发票申请信息导出
     public function invoicePoolExport()
     {
@@ -182,7 +187,174 @@ class Export extends BaseController
         excelExport('资金认领导出', array_keys($list[0]), $list);
     }
 
+    //回款核销明细表
+    public function orderlistExport()
+    {
+        $param = $this->request->only(['companyNo' => '', 'start' => '', 'end' => ''], 'post', 'trim');
+
+        $where = [['a.is_del', '=', 0]];
+
+        if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['a.addtime', 'between', [$param['start'], $param['end']]];
+        if ($param['companyNo'] != '') $where[] = ['a.companyNo', '=', $param['companyNo']];
+
+        $data = Db::name('qrd_info')
+            ->alias('a')
+            ->field('DATE_FORMAT(a.addtime,\'%Y\') 年,DATE_FORMAT(a.addtime,\'%m\') 月,DATE_FORMAT(a.addtime,\'%d\') 日,a.companyName 业务公司名称,a.companyNo 业务公司编号,b.viceCode 资金认领编号,c.tradNo 资金编号,c.total_fee 本次核销金额,c.addtime 本次核销时间,c.status 资金认领状态,a.sequenceNo 确认单编号,a.department 业务员部门,a.ownerName 业务员,a.platName 平台类型,a.qrdSource 确认单类型,a.qrdType 商品类型,a.poCode PO编号,a.customerAttr 客户属性,a.branch 分公司,a.customerName 客户名称,a.firstCat 一级分类,a.goodName 产品名称,a.tax 税点,(a.goodNum-a.thNum) 下单数量,a.goodPrice 销售单价,(a.totalPrice-a.th_fee) 销售总额')
+            ->leftJoin('assoc b', 'b.orderCode=a.sequenceNo')
+            ->leftJoin('trade_pool c', 'c.logNo=b.viceCode')
+            ->where($where)
+            ->order(['a.id' => 'desc'])
+            ->cursor();
+
+        //资金认领状态
+        $status = [1 => '待审批', 2 => '审批通过', 3 => '审批驳回', 4 => '已解除认领', 5 => '已取消认领'];
+
+        $list = [];
+
+        foreach ($data as $value) {
+            $value['资金认领状态'] = $status[$value['资金认领状态']] ?? '';
+            $value['确认单类型'] = $this->qrdSource[$value['确认单类型']] ?? '';
+            $value['商品类型'] = $this->qrdType[$value['商品类型']] ?? '';
+            $list[] = $value;
+        }
+
+        if (empty($list)) $list[] = ['导出数据为空' => ''];
+
+        excelExport('回款核销明细表', array_keys($list[0]), $list);
+
+    }
+
+    //回票明细表
+    public function invExport()
+    {
+        $param = $this->request->only(['companyNo' => '', 'start' => '', 'end' => ''], 'post', 'trim');
+
+        $where = [['a.is_del', '=', 0], ['b.is_del', '=', 0], ['c.is_del', '=', 0], ['d.is_del', '=', 0]];
 
-   
+        if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['a.本次回票时间', 'between', [$param['start'], $param['end']]];
+        if ($param['companyNo'] != '') $where[] = ['b.companyNo', '=', $param['companyNo']];
+
+        $data = Db::name('pay_invoice')
+            ->alias('a')
+            ->field('d.cgdTime 采购单下单日期,b.companyName 业务公司名称,b.companyNo 业务公司编号,a.hpNo 对账回票编号,a.payNo 对账单号,c.cgdNo 采购单编号,"??" 本次回票时间,a.invoiceNumber 发票号,a.inv_amount 本次回票金额,a.inv_subtotal_amount 不含税采购成本,"??" 税额,"??" 票面税率,d.companyName 公司回票抬头,d.goodNo 商品编号,d.firstCat 一级分类,d.fundCode 核算码,d.goodName 商品名称,d.goodNum 商品数量,d.goodUnit 单位,d.cgdSource 采购单类型,d.ownerName 采购员,d.supplierName 供应商名称,d.supplierNo 供应商编号,d.goodType 商品类型,d.tax 税率,d.packPrice 包装费,d.certPrice 证书费,d.markPrice 加标费,d.openPrice 开模费,d.costPrice 成本工艺费,d.deliveryPrice 物流费,d.barePrice 成本单价,d.diff_weight 工差,d.diff_fee 工差金额,d.goodPrice 单价,d.totalPrice 采购总货款,d.qrdCode 确认单编号,d.bkCode 备库编号,d.thNum 退货数量,d.th_fee 退货金额')
+            ->leftJoin('pay b', 'a.payNo=b.payNo')
+            ->leftJoin('pay_info c', 'c.payNo=a.payNo')
+            ->leftJoin('cgd_info d', 'd.sequenceNo=c.cgdNo')
+            ->where($where)
+            ->order(['a.id' => 'desc'])
+            ->cursor();
+
+        //采购单类型
+        $cgdSource = [1 => '直接下单', 2 => '咨询', 3 => '项目', 4 => '平台', 5 => '有赞'];
+        //商品类型
+        $goodType = [1 => '正常商品', 2 => '赠品', 3 => '样品'];
+
+        $list = [];
+
+        foreach ($data as $value) {
+            $value['采购单类型'] = $cgdSource[$value['采购单类型']] ?? '';
+            $value['商品类型'] = $goodType[$value['商品类型']] ?? '';
+
+            $list[] = $value;
+        }
+
+        if (empty($list)) $list[] = ['导出数据为空' => ''];
+
+        excelExport('回票明细表', array_keys($list[0]), $list);
+
+    }
+
+    //经营分析报表
+    public function analysisExport()
+    {
+        $param = $this->request->only(['start' => '', 'end' => ''], 'post', 'trim');
+
+        $where = [['companyNo' => '', 'a.is_del', '=', 0], ['b.is_del', '=', 0]];
+
+        if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['a.addtime', 'between', [$param['start'], $param['end']]];
+        if ($param['companyNo'] != '') $where[] = ['a.companyNo', '=', $param['companyNo']];
+
+        $data = Db::name('qrd_info')
+            ->alias('a')
+            ->field('
+            DATE_FORMAT(a.addtime,\'%Y\') 年,
+            DATE_FORMAT(a.addtime,\'%m\') 月,
+            DATE_FORMAT(a.addtime,\'%d\') 日,
+            a.companyName 业务公司名称,
+            a.companyNo 业务公司编号,
+            a.department 销售部门,
+            a.ownerName 销售员,
+            a.qrdSource 订单来源,
+            CONCAT("??",a.goodType) 活动类型,
+            a.sequenceNo 确认单编号,
+            b.bkCode 备库单编号,
+            b.sequenceNo 采购单单号,
+            a.platName 平台类型,
+            a.poCode PO编号,
+            a.customerAttr 客户属性,
+            a.branch 分公司,
+            a.customerName 客户名称,
+            a.goodNo 商品编码,
+            a.firstCat 一级分类,
+            a.secCat 二级分类,
+            a.thirdCat 三级分类,
+            a.goodName 产品名称,
+            a.goodUnit 单位,
+            a.goodNum 下单数量,
+            a.goodPrice 销售单价,
+            a.totalPrice 销售总额,
+            a.tax 税点,
+            a.inv_status 开票状态,
+            a.pay_status 回款状态,
+            b.ownerName 采购员,
+            b.goodPrice 采购裸价,
+            b.markPrice 加标费,
+            b.packPrice 包装费,
+            b.certPrice 证书费,
+            b.openPrice 开模费,
+            b.costPrice 工艺费,
+            b.deliveryPrice 物流费,
+            b.goodPrice 采购单价合计,
+            b.totalPrice 采购总货款,
+            0 毛利润,
+            0 毛利率,
+            b.tax 采购税点,
+            0 不含税采购成本,
+            a.qrdType 库存性质,
+            b.supplierName 供应商名称,
+            b.sendType 发货方式,
+            "??" 结算方式,
+            b.thNum 退货数量,
+            b.th_fee 退货金额,
+            "??" 采购实付货款,
+            "??" 销售实收总金额,
+            "??" 实付数量,
+            b.fundCode 财务核算编码')
+            ->leftJoin('cgd_info b', 'b.qrdCode=a.sequenceNo')
+            ->where($where)
+            ->order(['a.id' => 'desc'])
+            ->cursor();
+
+        $list = [];
+
+        foreach ($data as $value) {
+            $value['订单来源'] = $this->qrdSource[$value['订单来源']] ?? '';
+            $value['库存性质'] = $this->qrdType[$value['库存性质']] ?? '';
+            $value['开票状态'] = $this->inv_status[$value['开票状态']] ?? '';
+            $value['回款状态'] = $this->pay_status[$value['回款状态']] ?? '';
+            $value['发货方式'] = $this->sendType[$value['发货方式']] ?? '';
+
+            $value['毛利润'] = round(bcsub($value['销售总额'], $value['采购总货款'], 3), 2);
+            $value['毛利率'] = $value['销售总额'] == 0 ? 0 : round(bcmul(bcsub(1, bcdiv($value['采购总货款'], $value['销售总额'], 5), 5), 100), 2) . '%';
+            $value['不含税采购成本'] = round(bcdiv($value['采购总货款'], bcadd(1, bcdiv($value['采购税点'], 100, 3)), 3), 2);
+
+            $list[] = $value;
+        }
+
+        if (empty($list)) $list[] = ['导出数据为空' => ''];
+
+        excelExport('经营分析报表', array_keys($list[0]), $list);
+
+    }
 
 }

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

@@ -210,6 +210,9 @@ route::rule('systemlast', 'admin/System/GetLast');//销售单批量开票数据
 Route::rule('ipe','admin/Export/invoicePoolExport');//销售发票申请信息导出
 Route::rule('ile','admin/Export/invListExport');//进项发票等级导出
 Route::rule('ope','admin/Export/orderPayExport');//资金认领导出
+Route::rule('ole','admin/Export/orderlistExport');//回款核销明细表
+Route::rule('ie','admin/Export/invExport');//回票明细表
+Route::rule('ae','admin/Export/analysisExport');//经营分析报表