|
@@ -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);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|