wugg 2 vuotta sitten
vanhempi
commit
9f946c12b5

+ 261 - 165
app/admin/controller/Export.php

@@ -3,7 +3,9 @@
 namespace app\admin\controller;
 
 use app\admin\BaseController;
-use think\App;use think\facade\Db;
+use think\App;
+use think\facade\Db;
+use think\facade\Validate;
 
 //报表导出相关
 class Export extends BaseController
@@ -58,6 +60,15 @@ class Export extends BaseController
 			case 'payExport':
 				$file='对账单汇总表';
 				break;
+			case 'productPerformance':
+				$file='产品部门业绩';
+				break;
+			case 'productTh':
+				$file='产品部门退货单数据';
+				break;
+			case 'performance':
+				$file='业绩报表';
+				break;
 			default:
 				$file='暂无数据';
 				break;
@@ -124,7 +135,9 @@ class Export extends BaseController
 		          a.inv_type 开票种类,
 		          a.open_type 开票方式,
 		          a.exam_remark 申请备注,
-		          a.remark 发票备注')
+		          a.remark 发票备注,
+		          if(f.cxCode="",f.sequenceNo,f.cxCode) 销售主单号,
+		          f.goodPrice 商品单价')
 		          ->leftJoin('invoice_pool_info b', 'a.invNo=b.invNo')
 		          ->leftJoin('invoice_ticket c', 'a.invNo=c.invNo AND c.type=0 AND c.status=1')
 		          ->leftJoin('invoice_good d', 'd.invNo=a.invNo')
@@ -170,74 +183,47 @@ class Export extends BaseController
 
         $invoiceType = config('invoiceType.invoiceName');//开票种类(发票类型)
 
-        $list = Db::name('pay_invoice')
-            ->alias('a')
-            ->leftJoin('pay b', 'a.payNo=b.payNo')
-            ->leftJoin('invoice_info c', 'c.hpNo=a.hpNo AND c.status=1')
-            ->field('"" 序号,a.payNo,a.hpNo,a.addtime,a.invoiceNumber,a.open_time,b.supplierName,a.invoiceType,a.status,a.updatetime,a.remark,c.item_list,c.total')
-            ->where($where)
-            ->order('a.addtime desc')
-            ->cursor();
+		$list = Db::name('pay_invoice')
+		          ->alias('a')
+		          ->leftJoin('pay b', 'a.payNo=b.payNo and b.status=2')
+		          ->leftJoin('invoice_info c', 'c.hpNo=a.hpNo AND c.status=1')
+		          ->field('"" 序号,
+		          a.payNo 对账编号,
+		          a.hpNo 回票申请编号,
+		          DATE_FORMAT(a.addtime,\'%Y\') 年,
+		          DATE_FORMAT(a.addtime,\'%m\') 月,
+		          a.invoiceNumber 发票号,
+		          c.total 总额,
+		          c.subtotal_amount 金额,
+		          c.subtotal_tax 税额,		          
+		          a.open_time 开票日期,
+		          b.supplierName 供应商,
+		          a.invoiceType 发票类型,
+		          "" as 业务类型,
+		          a.status 认证状态,
+		          a.updatetime 认证时间,
+		          a.remark 备注')
+		          ->where($where)
+		          ->order('a.addtime desc')
+		          ->cursor();
 
-        $data = [];
-        $i = 1;
-        foreach ($list as $item) {
-
-            if ($item['item_list']) {
-                $item_list = json_decode($item['item_list'], true);
-                foreach ($item_list as $val) {
-                    $tp = [
-                        '序号' => $i++,
-                        '回票申请编号' => $item['hpNo'],
-                        '对账编号' => $item['payNo'],
-                        '年' => date('Y', strtotime($item['addtime'])),
-                        '月' => date('m', strtotime($item['addtime'])),
-                        '发票号' => $item['invoiceNumber'],
-                        '开票日期' => $item['open_time'],
-                        '金额' => $val['amount'],
-                        '税额' => $val['tax'],
-                        '税率' => $val['tax_rate'],
-                        '总额' => $item['total'],
-                        '供应商' => $item['supplierName'],
-                        '业务类型' => '采购回票',
-                        '发票类型' => $invoiceType[$item['invoiceType']] ?? '',
-                        '认证状态' => $status[$item['status']] ?? '',
-                        '认证时间' => $item['updatetime'],
-                        '备注' => $item['remark'],
-                    ];
-
-                    yield  $tp;
-                }
-            } else {
-               $tp = [
-                    '序号' => $i++,
-                    '回票申请编号' => $item['hpNo'],
-                    '对账编号' => $item['payNo'],
-                    '年' => date('Y', strtotime($item['addtime'])),
-                    '月' => date('m', strtotime($item['addtime'])),
-                    '发票号' => $item['invoiceNumber'],
-                    '开票日期' => $item['open_time'],
-                    '金额' => '',
-                    '税额' => '',
-                    '税率' => '',
-                    '总额' => $item['total'],
-                    '供应商' => $item['supplierName'],
-                    '业务类型' => '采购回票',
-                    '发票类型' => $invoiceType[$item['invoiceType']] ?? '',
-                    '认证状态' => $status[$item['status']] ?? '',
-                    '认证时间' => $item['updatetime'],
-                    '备注' => $item['remark'],
-                ];
-                yield  $tp;
-            }
-        }
-    }
+		$i=1;
+		foreach ($list as $item) {
+				$item['序号'] = $i;
+				$item['业务类型'] = '采购回票';
+				$item['认证状态'] = $status[$item['认证状态']]??"";
+				$item['发票类型'] = $invoiceType[$item['发票类型']]??"";
+				$i++;
+				yield  $item;
+
+		}
+	}
 
     //资金认领导出
     public function orderPayExport()
     {
         $param = $this->request->only(['start' => '', 'end' => '', 'name' => '', 'bank' => '', 'status' => '', 'tradNo' => '', 'company' => '', 'userd_lower' => '', 'used_upper' => ''], 'post', 'trim');
-        $where = [['a.is_del', '=', 0], ['b.is_del', '=', 0]];
+        $where = [['a.is_del', '=', 0]];
         if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['a.trade_time', 'between', [$param['start'] . ' 00:00:00', $param['end'] . ' 23:59:59']];
         if ($param['name'] != '') $where[] = ['a.trade_out', 'like', '%' . $param['name'] . '%'];
         if ($param['bank'] != '') $where[] = ['a.trade_bank', 'like', '%' . $param['bank'] . '%'];
@@ -252,15 +238,30 @@ class Export extends BaseController
 
         $list = Db::name('trade')
             ->alias('a')
-            ->field('a.companyNo 收款方公司编码,a.trade_in 收款单位名称,a.trade_account 付款银行单位账号,a.trade_out 付款银行单位名称,a.trade_remark 付款备注,a.trade_time 交易时间,a.tradNo 资金编号,a.status 状态,a.total_fee 收入金额,a.balance 未认领金额,a.used_fee 已认领金额,b.logNo 资金认领编号,a.customerNo 认领企业,c.orderCode 订单编号,d.poCode 平台编号,d.goodName 产品名称,d.ownerName 资金创建人,c.apply_name 认领创建人,b.status 认领审批状态,b.remark 驳回原因')
+            ->field('a.companyNo 收款方公司编码,
+            a.trade_in 收款单位名称,
+            a.trade_account 付款银行单位账号,
+            a.trade_out 付款银行单位名称,
+            a.trade_used 付款备注,
+            a.trade_time 交易时间,
+            a.tradNo 资金编号,
+            a.status 状态,
+            a.total_fee 收入金额,
+            a.balance 未认领金额,
+            b.total_fee 已认领金额,
+            b.logNo 资金认领编号,
+            b.customerNo 认领企业,
+            c.orderCode 订单编号,
+            d.cxCode 销售主单号,
+            d.poCode 平台编号,
+            d.goodName 产品名称,
+            d.ownerName 资金创建人,
+            c.apply_name 认领创建人,
+            b.status 认领审批状态,
+            b.remark 驳回原因')
             ->leftJoin('trade_pool b', 'b.tradNo=a.tradNo')
             ->leftJoin('assoc c', 'c.viceCode=b.logNo and c.type=2 and c.status<>3')
             ->leftJoin('qrd_info d', 'd.sequenceNo=c.orderCode')
-//            ->withAttr('状态', function ($val) use ($status) {
-//                return $status[$val] ?? '';
-//            })->withAttr('认领审批状态', function ($val) use ($b_status) {
-//                return $b_status[$val] ?? '';
-//            })
             ->where($where)
             ->order('a.trade_time desc')
            ->cursor();
@@ -268,7 +269,7 @@ class Export extends BaseController
             $value["付款银行单位账号"] .=' ';
             $value["认领企业"] =Db::name("customer_info")->where(["companyNo"=>$value["认领企业"]])->value("companyName","");
             $value['状态'] = $status[$value['状态']] ?? '';
-            $value['认领审批状态'] = $status[$value['认领审批状态']] ?? '';
+            $value['认领审批状态'] = $b_status[$value['认领审批状态']] ?? '';
         	yield $value;
         }
     }
@@ -320,19 +321,56 @@ class Export extends BaseController
         if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['a.check_time', 'between', [$param['start'] . ' 00:00:00', $param['end'] . ' 23:59:59']];
         if ($param['company'] != '') $where[] = ['b.companyNo', '=', $param['company']];
 
-        $data = Db::name('pay_invoice')
-            ->alias('a')
-            ->field('d.cgdTime 采购单下单日期,b.companyName 业务公司名称,b.companyNo 业务公司编号,a.hpNo 对账回票编号,a.payNo 对账单号,c.cgdNo 采购单编号,a.check_time 本次回票时间,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 商品类型,round(d.tax/100,2) 税率,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 退货金额,e.item_list')
-            ->leftJoin('pay b', 'a.payNo=b.payNo')
-            ->leftJoin('pay_info c', 'c.payNo=a.payNo')
-            ->leftJoin('cgd_info d', 'd.sequenceNo=c.cgdNo')
-            ->leftJoin('invoice_info e', 'e.payNo=a.payNo')
-            ->where($where)
-            ->order(['a.id' => 'desc'])
-            ->cursor();
+		$data = Db::name('pay_invoice')
+		          ->alias('a')
+		          ->field('d.cgdTime 采购单下单日期,
+		          b.companyName 业务公司名称,
+		          b.companyNo 业务公司编号,
+		          a.hpNo 对账回票编号,
+		          a.payNo 对账单号,
+		          c.cgdNo 采购单编号,
+		          a.check_time 本次回票时间,
+		          a.invoiceNumber 发票号,
+		          a.inv_amount 本次回票金额,
+		          d.totalPrice 采购单回票金额,
+		          "" 不含税采购成本,
+	                "" 税额,
+                    d.companyName 公司回票抬头,
+                    d.goodNo 商品编号,
+                    d.firstCat 一级分类,
+                    d.fundCode 核算码,
+                    d.goodName 商品名称,
+                    d.goodNum 商品数量,
+                    d.goodUnit 单位,
+                    d.cgdSource 采购单类型,
+                    d.ownerName 采购员,
+                    d.supplierName 供应商名称,
+                    d.supplierNo 供应商编号,
+                    d.goodType 商品类型,
+                    round(d.tax/100,2) 税率,
+                    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 退货金额,
+                    a.exam_remark 回票审核备注,
+                    a.remark 回票申请备注')
+		          ->leftJoin('pay b', 'a.payNo=b.payNo')
+		          ->leftJoin('pay_info c', 'c.payNo=a.payNo and c.status=1 and c.is_del=0')
+		          ->leftJoin('cgd_info d', 'd.sequenceNo=c.cgdNo')
+		          ->where($where)
+		          ->order(['a.id' => 'desc'])
+		          ->cursor();
 
         //采购单类型
         $cgdSource = [1 => '直接下单', 2 => '咨询', 3 => '项目', 4 => '平台', 5 => '有赞'];
@@ -341,30 +379,15 @@ class Export extends BaseController
 
 //        $list = [];
 
-        foreach ($data as $value) {
-            $value['采购单类型'] = $cgdSource[$value['采购单类型']] ?? '';
-            $value['商品类型'] = $goodType[$value['商品类型']] ?? '';
-
-            $item_list = json_decode($value['item_list'], true);
-
-            unset($value['item_list']);
-            foreach ($item_list as $item) {
-				$value['税额']= $item['tax'] ?? '';
-				$value['票面税率']= $item['tax_rate'] ?? '';
-//                $list = array_merge($value, [
-//                    '税额' => $item['tax'] ?? '',
-//                    '票面税率' => $item['tax_rate'] ?? '',
-//                ]);
-                yield $value;
-            }
-
-        }
+		foreach ($data as $value) {
+			$value['采购单类型'] = $cgdSource[$value['采购单类型']] ?? '';
+			$value['商品类型'] = $goodType[$value['商品类型']] ?? '';
+			$value['不含税采购成本'] = round($value['采购总货款']/(1+$value['税率']),2) ;
+			$value['税额'] = round($value['不含税采购成本']*$value['税率'],2) ;
 
-//        if (empty($list)) $list[] = ['导出数据为空' => ''];
-//
-//        excelExport('回票明细表', array_keys($list[0]), $list);
-
-    }
+			yield $value;
+		}
+	}
 
     //经营分析报表
     public function analysisExport()
@@ -387,9 +410,10 @@ class Export extends BaseController
             a.department 销售部门,
             a.ownerName 销售员,
             a.qrdSource 订单来源,
+            a.pay_source 支付来源,
             "" 活动类型,
             a.sequenceNo 确认单编号,
-            a.cxCode 销售订单号,
+            if(a.cxCode="",a.sequenceNo,a.cxCode) 销售订单号,
             b.bkCode 备库单编号,
             b.sequenceNo 采购单单号,
             a.platName 平台类型,
@@ -405,7 +429,7 @@ class Export extends BaseController
             a.goodUnit 单位,
             a.goodNum 下单数量,
             a.goodPrice 销售单价,
-            a.totalPrice 销售总额,
+            (a.totalPrice+a.th_fee) 销售总额,
             round(a.tax/100,2) 税点,
             b.ownerName 采购员,
             b.goodPrice 采购裸价,
@@ -416,7 +440,7 @@ class Export extends BaseController
             b.costPrice 工艺费,
             b.deliveryPrice 物流费,
             b.goodPrice 采购单价合计,
-            ifnull(b.totalPrice,a.total_origin_price) 采购总货款,
+            (ifnull(b.totalPrice,a.total_origin_price)+ifnull(b.th_fee,0)) 采购总货款,
             (a.totalPrice -ifnull(b.totalPrice,a.total_origin_price))  毛利润,
             round((a.totalPrice -ifnull(b.totalPrice,a.total_origin_price))/a.totalPrice,2) 毛利率,
             round(b.tax/100,2) 采购税点,
@@ -426,32 +450,24 @@ class Export extends BaseController
             b.sendType 发货方式,
             a.thNum 退货数量,
             a.fundCode 财务核算编码')
-            ->leftJoin('cgd_info b', 'b.qrdCode=a.sequenceNo and b.is_del=0')
-            ->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,$value['采购税点']), 3), 2);
+		          ->leftJoin('cgd_info b', 'b.sequenceNo=a.cgdNo and b.is_del=0')
+		          ->where($where)
+		          ->order(['a.id' => 'desc'])
+		          ->cursor();
 
-           yield $value;
-        }
+		$list = [];
 
-//        if (empty($list)) $list[] = ['导出数据为空' => ''];
-//
-//        excelExport('经营分析报表', array_keys($list[0]), $list);
+		foreach ($data as $value) {
+			$value['订单来源'] = $this->qrdSource[$value['订单来源']] ?? '';
+			$value['库存性质'] = $this->qrdType[$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,$value['采购税点']), 3), 2);
 
-    }
+			yield $value;
+		}
+	}
 
     //收入成本明细表
     public function orderInvExport()
@@ -463,21 +479,22 @@ class Export extends BaseController
         if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['a.addtime', 'between', [$param['start'] . ' 00:00:00', $param['end'] . ' 23:59:59']];
         if ($param['company'] != '') $where[] = ['a.inv_out', '=', $param['company']];
 
-        $data = Db::name('invoice_pool')
-            ->alias('a')
-            ->field('
+		$data = Db::name('invoice_pool')
+		          ->alias('a')
+		          ->field('
             a.invNo 发票申请编号,
-            d.orderCode 确认单编号,
-            e.cxCode 销售主单编号,
+            m.orderCode 确认单编号,
+            if(e.cxCode="",m.orderCode,e.cxCode) 销售主单编号,
             e.qrdSource 销售来源,
             b.seller_title 销售方抬头,
             e.department 业务部门,
             e.ownerName 业务人员,
-           ifnull((SELECT goodNum from cfp_invoice_good w where w.invNo =a.invNo and w.orderCode=e.sequenceNo),"") 本次开票数量,
-            d.cancel_fee 本次开票金额,
+            m.goodNum 本次开票数量,
+            m.totalPrice 本次开票金额,
+            e.goodPrice 销售单价,
             c.open_date 本次开票时间,
             c.inv_number 发票号,
-            round(e.tax/100,2) 开票税点,
+            m.tax 开票税点,
             a.status 开票状态,
             e.customerName 客户名称,
             e.fundCode 财务核算码,
@@ -509,32 +526,28 @@ class Export extends BaseController
             f.thNum 退货数量,
             f.th_fee 退货金额            
             ')
-            ->leftJoin('invoice_pool_info b', 'b.invNo=a.invNo')
-            ->leftJoin('invoice_ticket c', 'c.invNo=a.invNo and c.type=0 and c.status=1')
-            ->leftJoin('assoc d', 'd.viceCode=a.invNo and d.type=1')
-            ->leftJoin('qrd_info e', 'e.sequenceNo=d.orderCode')
-            ->leftJoin('cgd_info f', 'f.qrdCode=d.orderCode')
-            ->leftJoin('invoice_return g', 'g.invNo=a.invNo and g.status=2')
-            ->where($where)
-            ->order(['a.id' => 'desc'])
-            ->cursor();
-
-        $list = [];
-
-        foreach ($data as $value) {
-            $value['开票状态'] = $this->invoice_pool_status[$value['开票状态']] ?? '';
-            $value['发货方式'] = $this->sendType[$value['发货方式']] ?? '';
-            $value['商品类型'] = $this->qrdType[$value['商品类型']] ?? '';
-            $value['退票状态'] = $this->invoice_return_status[$value['退票状态']] ?? '';
-            $value['销售来源'] = $this->qrdSource[$value['销售来源']] ?? '';
-            yield $value;
-        }
+		          ->leftJoin('invoice_pool_info b', 'b.invNo=a.invNo')
+		          ->leftJoin('invoice_ticket c', 'c.invNo=a.invNo and c.type=0 and c.status in (0,1,2,3)')
+		          ->leftJoin("invoice_good m","m.invNo=a.invNo and m.invtype=0 and m.is_del=0")
+//		          ->leftJoin('assoc d', 'd.viceCode=a.invNo and d.type=1')
+		          ->leftJoin('qrd_info e', 'e.sequenceNo=m.orderCode')
+		          ->leftJoin('cgd_info f', 'f.sequenceNo=e.cgdNo')
+		          ->leftJoin('invoice_return g', 'g.invNo=a.invNo and g.status=2')
+		          ->where($where)
+		          ->order(['a.id' => 'desc'])
+		          ->cursor();
 
-//        if (empty($list)) $list[] = ['导出数据为空' => ''];
-//
-//        excelExport('收入成本明细表', array_keys($list[0]), $list);
+		$list = [];
 
-    }
+		foreach ($data as $value) {
+			$value['开票状态'] = $this->invoice_pool_status[$value['开票状态']] ?? '';
+			$value['发货方式'] = $this->sendType[$value['发货方式']] ?? '';
+			$value['商品类型'] = $this->qrdType[$value['商品类型']] ?? '';
+			$value['退票状态'] = $this->invoice_return_status[$value['退票状态']] ?? '';
+			$value['销售来源'] = $this->qrdSource[$value['销售来源']] ?? '';
+			yield $value;
+		}
+	}
 
     //应收台账表
     public function standingBookExport()
@@ -806,4 +819,87 @@ class Export extends BaseController
 //
 //        excelExport('订单对账汇总表', array_keys($list[0]), $list);
     }
+    //产品部门销售业绩
+    public function productPerformance(){
+		$param = $this->request->only([ 'start' => '', 'end' => ''], 'post', 'trim');
+		$valid =Validate::rule([
+			"start|起始时间"=>"require|date",
+			"end|结束时间"=>"require|date|gt:start",
+		]);
+		if($valid->check($param)==false) return error_show(1005,$valid->getError());
+		$Db= Db::connect("mysql_wsm");
+		$list =$Db->name("sale")->field("orderCode 销售单号,apply_name 业务人员,apply_id 业务部门,cat_id 分类,total_price 产品货款总额,addtime 日期")
+		->where(["is_del"=>0,"status"=>[0,1,2]])
+		->whereBetween("addtime",[date("Y-m-d 00:00:00",strtotime($param['start'])),date("Y-m-d 23:59:59",
+		strtotime($param['end']))])
+		->cursor();
+		foreach ($list as $value){
+			$value['业务部门'] = $Db->name("depart_user")->alias("a")->leftjoin("company_item b","a.itemid=b.id")
+			->where(["a.is_del"=>0,"a.status"=>1,"a.uid"=>$value['业务部门']])->value("b.name",'');
+			$value['分类'] = $Db->name("cat")->where(["id"=>$value['分类']])->value("search","");
+			yield $value;
+		}
+	}
+	  //产品部门销售业绩
+    public function productTh(){
+		$param = $this->request->only([ 'start' => '', 'end' => ''], 'post', 'trim');
+		$valid =Validate::rule([
+			"start|起始时间"=>"require|date",
+			"end|结束时间"=>"require|date|gt:start",
+		]);
+		if($valid->check($param)==false) return error_show(1005,$valid->getError());
+		$Db= Db::connect("mysql_wsm");
+		$list =$Db->name("th_data")->alias("a")
+		->leftjoin("sale b","a.orderCode=b.orderCode")
+		->field("a.thCode 退货单号,a.orderCode 销售单号,b.apply_name 业务人员,b.apply_id 业务部门,a.cat_id 分类,b.total_price 产品货款总额,a.th_fee 退货金额,a.addtime 日期")
+		->where(["a.is_del"=>0])
+		->whereBetween("a.addtime",[date("Y-m-d 00:00:00",strtotime($param['start'])),date("Y-m-d 23:59:59",
+		strtotime($param['end']))])
+		->cursor();
+		foreach ($list as $value){
+			$value['业务部门'] = $Db->name("depart_user")->alias("a")->leftjoin("company_item b","a.itemid=b.id")
+			->where(["a.is_del"=>0,"a.status"=>1,"a.uid"=>$value['业务部门']])->value("b.name",'');
+			$value['分类'] = $Db->name("cat")->where(["id"=>$value['分类']])->value("search","");
+			yield $value;
+		}
+	}
+	//客服项目部数据业绩下载
+	public function performance(){
+		$param = $this->request->only(["start"=>"","end"=>""],"post","trim");
+		$valid =Validate::rule([
+			"start|起始时间"=>"require|date",
+			"end|结束时间"=>"require|date|gt:start",
+		]);
+		if($valid->check($param)==false) return error_show(1005,$valid->getError());
+		$list =Db::name("trade_pool")->alias("a")
+		         ->leftJoin("assoc b","a.logNo = b.viceCode and b.is_del=0 and b.status=2  and b.type=2")
+		         ->leftJoin("qrd_info c","b.orderCode=c.sequenceNo and c.is_del=0")
+		         ->where(["a.status"=>2,"a.is_del"=>0])
+		         ->whereBetween("a.addtime",[date("Y-m-d 00:00:00",strtotime($param['start'])),date("Y-m-d 23:59:59",
+			         strtotime($param['end']))])
+		         ->field("
+		a.logNo 回款单号,
+		c.ownerName 销售人员,
+		c.department 部门,
+		c.qrdType 订单类型,
+		if(c.cxCode='',c.sequenceNo,c.cxCode) 确认单编号,
+		 c.cgdNo 采购单号,
+		 c.customerAttr 客户属性,
+		 c.branch 客户分公司,
+		 c.customerName 客户名称,
+		c.goodName 产品名称,
+		c.firstCat 一级分类,
+		c.goodPrice 销售单价,
+		c.goodNum-c.thNum 下单数量,
+		c.totalPrice 销售总额,
+		c.createdTime 确认单下单时间,
+		a.addtime 回款日期,
+		a.total_fee 回款金额,
+		( timestampdiff( DAY, a.addtime, now())) 账期")
+		         ->order("a.addtime desc")
+		         ->cursor();
+		foreach ($list as $value){
+			yield $value;
+		}
+	}
 }

+ 83 - 14
app/admin/controller/InterOrder.php

@@ -17,9 +17,9 @@ class InterOrder extends \app\admin\BaseController{
 	* @throws \think\db\exception\ModelNotFoundException
 	 */
 	 public function list(){
-		$param = $this->request->only(["page"=>1,"size"=>10,'cgdNo'=>"","qrdNo"=>"","khNo"=>"",
+		$param = $this->request->only(["page"=>1,"size"=>10,'cgdNo'=>"","qrdNo"=>"","khNo"=>"","platform_type"=>"",
 		"supplierNo"=>"","companyNo"=>"","starttime"=>"","endtime"=>"","sale_name"=>"","cgd_saler"=>""],"post","trim");
-		$where=[];
+			$where=[["b.is_del","=",0],["c.is_del","=",0],["b.qrdSource","=",10],["c.cgdSource","=",10]];
 		 $check = checkRole($this->roleid,143);
         if($check){
             $where[]=["a.apply_id","=",$this->uid];
@@ -33,6 +33,7 @@ class InterOrder extends \app\admin\BaseController{
 		if($param['endtime']!="") $where[]=["a.addtime","<=",date("Y-m-d 23:59:59",strtotime($param['endtime']))];
 		if($param['sale_name']!="") $where[]=["b.ownerName","like","%{$param['sale_name']}%"];
 		if($param['cgd_saler']!="") $where[]=["c.ownerName","like","%{$param['cgd_saler']}%"];
+		if($param['platform_type']!=="") $where[]=["b.platform_type","=",$param['platform_type']];
 
 		$count= Db::name("inter_order")
             ->alias("a")
@@ -48,6 +49,9 @@ class InterOrder extends \app\admin\BaseController{
             ->leftJoin("cgd_info c","b.cgdNo=c.sequenceNo and c.is_del=0 and c.cgdSource=10")
 		->field("a.id,
 		a.orderCode,
+		 a.platform_id,
+            b.platName,
+            b.platform_type,
 		b.customerName as khName,
 		b.customerNo as khNo,
 		b.companyName,
@@ -84,7 +88,7 @@ class InterOrder extends \app\admin\BaseController{
 	 public function create(){
 	 	$param =$this->request->only([
 	 		"sale_name"=>"","sale_id"=>"","companyNo"=>'',"poCode"=>"","workCode"=>"","khNo"=>"","qrdType"=>"","goodName"=>"",
-	 		"tax"=>"","goodNum"=>"","goodPrice"=>"","mobile"=>"","addr"=>"","contactor"=>"",
+	 		"tax"=>"","goodNum"=>"","goodPrice"=>"","mobile"=>"","addr"=>"","contactor"=>"","platform_id"=>"0",
 	 		"buyer"=>"","buyerid"=>"","sendtime"=>"","cat"=>'',"supplierNo"=>"","cgd_tax"=>"","sale_depart"=>"","cgd_depart"=>""
 	 		],"post");
 	 	$valid =Validate::rule([
@@ -93,6 +97,7 @@ class InterOrder extends \app\admin\BaseController{
 	 		"companyNo|业务公司编号"=>"require|max:255|min:1",
 	 		"supplierNo|业务公司编号"=>"require|max:255|min:1",
 	 		"poCode|PO编号"=>"require|max:255|min:1",
+	 		"platform_id|平台id"=>"require|number",
 	 		"workCode|单据编号"=>"require|max:255|min:1",
 	 		"khNo|客户公司编号"=>"require|max:255|min:1",
 	 		"qrdType|订单类型"=>"require|number|in:[1,2,3]",
@@ -120,6 +125,13 @@ class InterOrder extends \app\admin\BaseController{
 		$companyName =Db::name("supplier_info")->where('code', "=", $param['companyNo'])->value("name","");
 		$taxinfo = Db::name("order_rate")->where(["id"=>$param["tax"],"status"=>1])->value("rate",0);
 		$param["cgd_tax"]=$param["cgd_tax"]/100;
+		$platform=[];
+		if($param['platform_id']!=0){
+			$platform = $this->platform($param['platform_id']);
+			if(empty($platform)) return error_show(1004,'平台信息未找到');
+			if($platform['is_select_pay_rate']==1) return error_show(1004,'平台带有支付渠道不可选');
+
+		}
 		$cat = [];
 		$this->cat($param['cat'],$cat);
 		if(empty($cat)) return error_show(1004,'分类信息为找到');
@@ -127,6 +139,7 @@ class InterOrder extends \app\admin\BaseController{
 			"cgdNo"=>$cgddcode,
 			"orderCode"=>$qrdcode,
 			"rate"=>$param["cgd_tax"],
+			"platform_id"=>$param["platform_id"],
 			"apply_id"=>$this->uid,
 			"apply_name"=>$this->uname,
 			"mobile"=>$param['mobile'],
@@ -143,13 +156,14 @@ class InterOrder extends \app\admin\BaseController{
                                 'department' => $param['sale_depart'],//部门,
                                 'createdTime' => date("Y-m-d H:i:s"),//销售单创建时间,
                                 'qrdType' => $param['qrdType'],//销售单类型,
-                                'qrdSource' => 1,//销售单来源,
+                                'qrdSource' => 10,//销售单来源,
                                 'companyNo' => $param['companyNo'],//业务企业编号,
                                 'companyName' => $companyName,//业务企业名称,
                                 'customerNo' => $param['khNo'],//客户编号,
                                 'customerName' =>$customer['companyName']??"",//客户名称,
                                 'poCode' => $param['poCode'],//po编号,
-                                'platName' => '',//平台名称,
+                                'platName' => $platform['platform_name']??"",//平台名称,
+                                'platform_type' => $platform['use_type']??"0",//平台类型,
                                 'workCode' =>$param['workCode'],//业务编号,
                                 'zxCode' => '',//咨询单编号,
                                 'goodNo' => $goodCode,//商品编号,
@@ -189,8 +203,6 @@ class InterOrder extends \app\admin\BaseController{
                                 'pay_status' =>1,//收款状态,1未付,2部分,3完结
                                 'inv_status' => 1,//开票状态,,1未付,2部分,3完结
                                 'remark' => '',//备注,
-                                'invtime' => null,
-                                'paytime' => null,
                                 'diff_weight' =>0,//工差重量,
                                 'diff_fee' =>0,//工差金额,
                                 'area' =>$customer['companyName']??"",//公司,
@@ -216,7 +228,7 @@ class InterOrder extends \app\admin\BaseController{
                                 'department' => $param['cgd_depart'],//部门名称',
                                 'createdTime' => date("Y-m-d H:i:s"),//订单创建时间',
                                 'cgdType' =>$param['qrdType'],//采购单类型',
-                                'cgdSource' => 0,//采购单来源',
+                                'cgdSource' =>10,//采购单来源',
                                 'companyNo' => $param['companyNo'],//业务公司编号',
                                 'companyName' => $companyName,//业务公司',
                                 'cgdTime' => date("Y-m-d H:i:s"),//采购下单时间',
@@ -322,7 +334,7 @@ class InterOrder extends \app\admin\BaseController{
 	public function save(){
 			$param =$this->request->only([
 	 		"sale_name"=>"","sale_id"=>"","companyNo"=>'',"poCode"=>"","workCode"=>"","khNo"=>"","qrdType"=>"","goodName"=>"",
-	 		"tax"=>"","goodNum"=>"","goodPrice"=>"","good_total"=>"","mobile"=>"","addr"=>"","contactor"=>"","id"=>"",
+	 		"tax"=>"","goodNum"=>"","goodPrice"=>"","good_total"=>"","mobile"=>"","addr"=>"","contactor"=>"","id"=>"","platform_id"=>0,
 	 		"buyer"=>"","buyerid"=>"","sendtime"=>"","cat"=>'',"supplierNo"=>"","cgd_tax"=>"","sale_depart"=>"","cgd_depart"=>""
 	 		],"post");
 	 	$valid =Validate::rule([
@@ -331,6 +343,7 @@ class InterOrder extends \app\admin\BaseController{
 	 		"sale_id|业务员名称"=>"require|number|gt:0",
 	 		"companyNo|业务公司编号"=>"require|max:255|min:1",
 	 		"supplierNo|业务公司编号"=>"require|max:255|min:1",
+	 		"platform_id|平台id"=>"require|number",
 	 		"poCode|PO编号"=>"require|max:255|min:1",
 	 		"workCode|单据编号"=>"require|max:255|min:1",
 	 		"khNo|客户公司编号"=>"require|max:255|min:1",
@@ -357,12 +370,23 @@ class InterOrder extends \app\admin\BaseController{
 	 	if(empty($qrd_order)) return error_show(1004,"未找到销售单数据");
 	 	$cgd_order=Db::name("cgd_info")->where(["sequenceNo"=>$inter_order['cgdNo']])->findOrEmpty();
 	 	if(empty($cgd_order)) return error_show(1004,"未找到采购单数据");
+	 	$goodinfo=Db::name("good")->where(["spuCode"=>$qrd_order['goodNo']])->findOrEmpty();
+	 	if(empty($goodinfo)) return error_show(1004,"未找到商品数据");
 		$param["cgd_tax"]=$param["cgd_tax"]/100;
 		$customer =Db::name("customer_info")->where('companyNo', "=", $param['khNo'])->find();
 		$supplierName =Db::name("supplier_info")->where('code', "=", $param['supplierNo'])->value("name","");
 		$companyName =Db::name("supplier_info")->where('code', "=", $param['companyNo'])->value("name","");
 		$taxinfo = Db::name("order_rate")->where(["id"=>$param["tax"],"status"=>1])->value("rate",0);
+		$platform=[];
+		if($param['platform_id']!=0){
+			$platform = $this->platform($param['platform_id']);
+			if(empty($platform)) return error_show(1004,'平台信息未找到');
+			if($platform['is_select_pay_rate']==1) return error_show(1004,'平台带有支付渠道不可选');
+
+		}
 		$cat = [];
+		if($qrd_order['status']!=0) return error_show(1004,"销售单已对账,无法修改");
+		if($cgd_order['status']!=0) return error_show(1004,"采购单已对账,无法修改");
 		$this->cat($param['cat'],$cat);
 		if(empty($cat)) return error_show(1004,'分类信息为找到');
 		$inter=[
@@ -370,6 +394,7 @@ class InterOrder extends \app\admin\BaseController{
 			"rate"=>$param["cgd_tax"],
 			"mobile"=>$param['mobile'],
 			"contactor"=>$param['contactor'],
+			"platform_id"=>$param["platform_id"],
 			"addr"=>$param['addr'],
 			"sendtime"=>$param['sendtime'],
 			"updatetime"=>date("Y-m-d H:i:s")
@@ -387,6 +412,8 @@ class InterOrder extends \app\admin\BaseController{
                                 'customerName' =>$customer['companyName']??"",//客户名称,
                                 'poCode' => $param['poCode'],//po编号,
                                 'workCode' =>$param['workCode'],//业务编号,
+                                'platName' => $platform['platform_name']??"",//平台名称,
+                                'platform_type' => $platform['use_type']??"0",//平台类型,
                                 'goodName' => $param['goodName'],//商品名称,
                                 'firstCat' => $cat[0]['cat_name']??"",//一级分类,
                                 'secCat' => $cat[1]['cat_name']??"",//二级分类,
@@ -430,12 +457,21 @@ class InterOrder extends \app\admin\BaseController{
                                 'sendNum' => $param['goodNum'],//已发货数量',
                                 'updatetime' => date("Y-m-d H:i:s"),
                             ];
+           $good=[
+					"id"=>$goodinfo['id'],
+					"good_name"=>$param['goodName'],
+					"companyNo"=>$param['companyNo'],
+					"supplierNo"=>$param['supplierNo'],
+					"cat_name"=>$cat[2]['cat_name'],
+					"updatetime"=>date("Y-m-d H:i:s")
+				];
 				 Db::startTrans();
         try {
             $a = Db::name("qrd_info")->save($qrd);
             $d = Db::name("inter_order")->save($inter);
             $b = Db::name('cgd_info')->save($cgd);
-            if ($a && $b && $d) {
+            $c = Db::name('good')->save($good);
+            if ($a && $b && $d &&$c) {
                 Db::commit();
                 return app_show(0,'更新成功');
             } else {
@@ -473,12 +509,16 @@ class InterOrder extends \app\admin\BaseController{
 	  public function  info(){
         $post=$this->request->post();
         $id = isset($post['id'])&&$post['id']!='' ? $post['id'] :"";
-        $condition = [['a.id',"=",$id]];
-        $list=Db::name('inter_order')->alias('a')->join('qrd_info b','a.orderCode=b.sequenceNo','left')
-            ->join('cgd_info c','a.cgdNo=c.sequenceNo','left')->json(["cat"])->where($condition)
+        $condition = [['a.id',"=",$id],["b.is_del","=",0],["c.is_del","=",0],["b.qrdSource","=",10],["c.cgdSource","=",10]];
+        $list=Db::name('inter_order')->alias('a')->join('qrd_info b',"a.orderCode=b.sequenceNo and b.is_del=0 and b.qrdSource=10",'left')
+            ->join('cgd_info c',"a.cgdNo=c.sequenceNo and c.is_del=0 and c.cgdSource=10",'left')->json
+            (["cat"])->where($condition)
             ->order("a.addtime desc")->field('a.id,
             b.goodNo ,
             a.orderCode,
+            a.platform_id,
+            b.platName,
+            b.platform_type,
             b.customerNo as khNo,
             b.customerName as khName,
             b.companyName,
@@ -532,7 +572,11 @@ class InterOrder extends \app\admin\BaseController{
         ("weight desc ,addtime desc")->select()->toArray();
         return app_show(0,"获取成功",$cat);
     }
-
+	/**
+	* @param $id
+	* @param array $cat
+    * @return array|mixed
+    */
     private function cat($id,&$cat=[]){
 	 	$condition[]=["id","=",$id];
 	 	$data= Db::connect("mysql_wsm")->name("cat")->where($condition)->field("id,cat_name,fund_code,pid")->findOrEmpty();
@@ -540,5 +584,30 @@ class InterOrder extends \app\admin\BaseController{
 		if($data['pid']==0||empty($data)) return $cat;
 		else $this->cat($data['pid'],$cat);
 
+    }
+	/**
+	* @param $id
+	 * @return array|\think\Model
+	 */
+    private function platform($id){
+	 	$condition[]=["id","=",$id];
+	 	$data= Db::connect("mysql_wsm")->name("platform")->where($condition)->field("id,platform_name,is_select_pay_rate,use_type,desc")->findOrEmpty();
+	    return $data;
+    }
+
+   public function getPlatform(){
+        $post=$this->request->post();
+        $condition = [['status',"=",1],["is_del","=",0],["platform_type","=",0]];
+        $is_pay=isset($post['is_pay']) && $post['is_pay'] !==""? intval($post['is_pay']) :"";
+        if($is_pay!==""){
+            $condition[]=['is_select_pay_rate',"=",$is_pay];
+        }
+         $use_type=isset($post['use_type']) && $post['use_type'] !==""? intval($post['use_type']) :"";
+        if($use_type!==""){
+            $condition[]=['use_type',"=",$use_type];
+        }
+        $cat = Db::connect("mysql_wsm")->name("platform")->where($condition)->field("id,platform_name,is_select_pay_rate,use_type,desc")
+        ->order("addtime desc")->select()->toArray();
+        return app_show(0,"获取成功",$cat);
     }
 }

+ 68 - 19
app/admin/controller/InvCat.php

@@ -9,6 +9,7 @@ use think\facade\Db;
 use think\facade\Validate;
 
 class InvCat extends BaseController{
+	private $Tax=[1=>"免税",2=>"不征税",3=>"零税率"];
     public function __construct(App $app) {parent::__construct($app);}
     //商品关联开票类目
     public function AddGood(){
@@ -37,12 +38,22 @@ class InvCat extends BaseController{
 			$is_discount=isset($this->post['is_discount'])&& $this->post['is_discount']!==''?intval($this->post['is_discount']):0;
 			$addTax=isset($this->post['addTax'])&& $this->post['addTax']!==''?trim($this->post['addTax']):'';
 			if($is_discount==1){
+//				1.如果YHZCBS为1, 则ZZSTSGL必须填; 如果YHZCBS为0,ZZSTSGL不填。
+//				2.如果YHZCBS为1, 且税率为0, 则LSLBS只能根据实际情况选择"1或2"中的一种, 不能选择3, 且ZZSTSGL内容也只能写与1/2对应的"免税/不征税";
+//				3.如果税率为0,但并不属于优惠政策(即普通的零税率),则YHZCBS填0,LSLBS填3,ZZSTSGL为空;
+//				4.如果税率不为0, 但属于优惠政策,则YHZCBS填1,LSLBS填空或不填,ZZSTSGL根据实际情况填写;
+//				5.如果税率不为0, 且不属于优惠政策, 则YHZCBS填0,LSLBS填空或不填,ZZSTSGL不填或空.
 				// 优惠政策下 税率标识只能选择 0非零说率 1免税 2不征税 增值税管理为空"出口零税/免税/不征税"
-				if($tax==0 && $invTag==3){
-					return error_show(1004,"税率标识不能选择零税率");
-				}
-				if($addTax==''){
-					return error_show(1004,"参数 addTax 不能为空");
+				if($tax==0){
+					if($invTag==3){
+						return error_show(1004,"税率标识不能选择零税率");
+					}
+					if($addTax==''){
+						return error_show(1004,"参数 addTax 不能为空");
+					}
+					if($addTax!=$this->Tax[$invTag]){
+					return error_show(1004,"税率标识与增值税管理内容不符");
+					}
 				}
 			}else{
 				// 非优惠政策下 零税率 税率标识只能选择 3 普通零税率  增值税管理为空
@@ -50,6 +61,9 @@ class InvCat extends BaseController{
 				if($tax==0 && $invTag!=3){
 					return error_show(1004,"税率标识只能选择零税率");
 				}
+				if($tax!=0 && $invTag!=0){
+					return error_show(1004,"税率标识只能选择非零税率");
+				}
 				$addTax='';
 			}
 
@@ -94,7 +108,7 @@ class InvCat extends BaseController{
         $count=Db::name("good")->where($condition)->count();
         $total=ceil($count/$size);
         $page = $page>=$total? intval($total):$page;
-        $list =Db::name("good")->where($condition)->order("addtime desc")->page($page,$size)->select()->toArray();
+        $list =Db::name("good")->where($condition)->order("id desc")->page($page,$size)->select()->toArray();
         foreach ($list as &$value){
             $company =Db::name("supplier_info")->where(["code"=>$value['companyNo']])->find();
             $value['companyName']=$company['name']??"";
@@ -136,7 +150,7 @@ class InvCat extends BaseController{
         $count =Db::name("inv_cat")->where($condition)->count();
         $total=ceil($count/$size);
         $page = $page>=$total? intval($total):$page;
-        $list =Db::name("inv_cat")->where($condition)->order("addtime desc")->page($page,$size)->select()->toArray();
+        $list =Db::name("inv_cat")->where($condition)->order("id desc")->page($page,$size)->select()->toArray();
         foreach ($list as &$value){
             $value['tax'] = $value['tax']==''?[]:explode("、",$value['tax']);
         }
@@ -201,20 +215,55 @@ class InvCat extends BaseController{
                 $value['tax'] = str_replace('%', '', $value['tax']);
                 $value['tax'] = round(bcdiv($value['tax'], 100, 3), 2);
 
+//
+//                if ($value['is_discount'] == 1) {
+//                    // 优惠政策下 税率标识只能选择 0非零说率 1免税 2不征税 增值税管理为空"出口零税/免税/不征税"
+//                    if($value['tax'] == 0){
+//                    	if ( $value['inv_tag'] == 3) throw new Exception($value['spuCode'].'税率标识不能选择零税率');
+//                        if ($value['addTax'] == '') throw new Exception($value['spuCode'].'参数 addTax 不能为空');
+//                        if($value['addTax']!=$this->Tax[$value['inv_tag']]){
+//                        	throw new Exception($value['spuCode'].'税率标识与增值税管理内容不符');
+//						}
+//                    }
+//
+//
+//                } else {
+//                    // 非优惠政策下 零税率 税率标识只能选择 3 普通零税率  增值税管理为空
+//                    // 非优惠政策下 非零税率 税率标识只能选择 0 非零税率  增值税管理为空
+//                    if ($value['tax'] == 0 && $value['inv_tag'] != 3) throw new Exception($value['spuCode'].'税率标识只能选择零税率');
+//					$value['addTax'] = '';
+//                }
 
-                if ($value['is_discount'] == 1) {
-                    // 优惠政策下 税率标识只能选择 0非零说率 1免税 2不征税 增值税管理为空"出口零税/免税/不征税"
-                    if ($value['tax'] == 0 && $value['inv_tag'] == 3) throw new Exception($value['spuCode'].'税率标识不能选择零税率');
-
-                    if ($value['addTax'] == '') throw new Exception($value['spuCode'].'参数 addTax 不能为空');
-
-                } else {
-                    // 非优惠政策下 零税率 税率标识只能选择 3 普通零税率  增值税管理为空
-                    // 非优惠政策下 非零税率 税率标识只能选择 0 非零税率  增值税管理为空
-                    if ($value['tax'] == 0 && $value['inv_tag'] != 3) throw new Exception($value['spuCode'].'税率标识只能选择零税率');
+                if($value['is_discount'] ==1){
+//				1.如果YHZCBS为1, 则ZZSTSGL必须填; 如果YHZCBS为0,ZZSTSGL不填。
+//				2.如果YHZCBS为1, 且税率为0, 则LSLBS只能根据实际情况选择"1或2"中的一种, 不能选择3, 且ZZSTSGL内容也只能写与1/2对应的"免税/不征税";
+//				3.如果税率为0,但并不属于优惠政策(即普通的零税率),则YHZCBS填0,LSLBS填3,ZZSTSGL为空;
+//				4.如果税率不为0, 但属于优惠政策,则YHZCBS填1,LSLBS填空或不填,ZZSTSGL根据实际情况填写;
+//				5.如果税率不为0, 且不属于优惠政策, 则YHZCBS填0,LSLBS填空或不填,ZZSTSGL不填或空.
+				// 优惠政策下 税率标识只能选择 0非零说率 1免税 2不征税 增值税管理为空"出口零税/免税/不征税"
+				if($value['tax'] ==0){
+					if($value['inv_tag']==3){
+						throw new Exception($value['spuCode'].'税率标识不能选择零税率');
+					}
+					if($value['addTax']==''){
+						throw new Exception($value['spuCode'].'参数 addTax 不能为空');
+					}
+					if($value['addTax']!=$this->Tax[$value['inv_tag']]){
+						throw new Exception($value['spuCode'].'参数 addTax 不能为空');
+					}
+				}
 
-                    $value['addTax'] = '';
-                }
+			}else{
+				// 非优惠政策下 零税率 税率标识只能选择 3 普通零税率  增值税管理为空
+				// 非优惠政策下 非零税率 税率标识只能选择 0 非零税率  增值税管理为空
+				if($value['tax'] == 0 && $value['inv_tag'] != 3){
+					throw new Exception($value['spuCode'].'税率标识只能选择零税率');
+				}
+				if($value['tax']!=0 && $value['inv_tag']!=0){
+					throw new Exception($value['spuCode']."税率标识只能选择非零税率");
+				}
+				$value['addTax']='';
+			}
 
                 $data = [
                     'inv_cat_name' => $all_cat_code[$value['cat_code']]['short_name'],

+ 11 - 2
app/admin/controller/OrderInv.php

@@ -82,6 +82,10 @@ class OrderInv extends BaseController{
         if($company['denomination']!=''&& $invfee>intval($company['denomination'])*10000){
                 return error_show(1004,"开票面额不能超过{$company['denomination']}万元");
         }
+        $platform = array_column($orderArr,'platform_type');
+        if(count(array_unique($platform))!=1){
+            return error_show(1004,"订单平台类型不一致");
+        }
         Db::startTrans();
         try{
                foreach ($orderArr as $value){
@@ -198,6 +202,7 @@ class OrderInv extends BaseController{
             "apply_name"=>$this->uname,
             "inv_type"=>$invtype,//发票类型  专用 普通 电子专用 电子普通 全电子票
             "open_type"=>0, //开票类型 金税开票 金税线下 纯线下
+            "platform_type"=>$platform[0]??0, //开票类型 金税开票 金税线下 纯线下
             "is_ticket"=>$company['out_ticket'], //是否支持金税开票
             "company_type"=> $buyinfo['company_type']??'01', //类型01 企业,02 机关事业单位,03 个人, 04 其他
             "remark"=>$remark, //申请备注
@@ -1072,6 +1077,10 @@ class OrderInv extends BaseController{
         if($inv_out!==""){
            $condition[]=["a.inv_out","=",$inv_out];
         }
+         $platform_type= isset($this->post['platform_type'])&&$this->post['platform_type']!=="" ? intval($this->post['platform_type']):"";
+        if($platform_type!==""){
+           $condition[]=["a.platform_type","=",$platform_type];
+        }
 //          $inv_in = isset($this->post['inv_in'])&&$this->post['inv_in']!=="" ? trim($this->post['inv_in']):"";
 //        if($inv_in!==""){
 //           $condition[]=["a.inv_in","=",$inv_in];
@@ -1110,13 +1119,13 @@ class OrderInv extends BaseController{
            $condition[]=["a.apply_name","like","%$apply_name%"];
         }
         $count=Db::name("invoice_pool")->alias("a")
-        ->leftJoin("invoice_pool_info b","a.invNo=b.invNo")
+        ->rightJoin("invoice_pool_info b","a.invNo=b.invNo")
         ->leftJoin("invoice_ticket c","a.invNo=c.invNo and c.type=0")
         ->where($condition)->count();
         $total =ceil($count/$size);
         $page= $page>$total ? intval($total):$page;
         $list=Db::name("invoice_pool")->alias("a")
-        ->leftJoin("invoice_pool_info b","a.invNo=b.invNo")
+        ->rightJoin("invoice_pool_info b","a.invNo=b.invNo")
         ->leftJoin("invoice_ticket c","a.invNo=c.invNo and c.type=0")
         ->where($condition)->field("b.*,a.*,c.inv_code,c.inv_number,c.open_date,c.type")
         ->page($page,$size)->order("a.addtime desc")->select()->toArray();

+ 92 - 81
app/admin/controller/OrderPay.php

@@ -21,6 +21,10 @@ class OrderPay extends BaseController{
         if(empty($orderArr)){
             return error_show(1004,"参数 orderArr 不能为空");
         }
+        $platform = array_column($orderArr,'platform_type');
+        if(count(array_unique($platform))!=1){
+            return error_show(1004,"订单平台类型不一致");
+        }
        Db::startTrans();
         try{
             $trade =Db::name("trade")->where(["tradNo"=>$tradNo,"is_del"=>0])->lock(true)->findOrEmpty();
@@ -84,6 +88,7 @@ class OrderPay extends BaseController{
                 $create = [
                     "logNo"=>$logNo,
                     "tradNo"=>$tradNo,
+                    "platform_type"=>$qrd['platform_type']??0,
                     "companyNo"=>$trade['companyNo'],
                     "customerNo"=>$qrd['customerNo'],
                     "apply_id"=>$this->uid,
@@ -278,6 +283,11 @@ class OrderPay extends BaseController{
         $used_upper =isset($this->post['used_upper'])&&$this->post['used_upper']!==""? floor($this->post['used_upper']):"";
         if($used_lower!=="")$condition[]=["used_fee",">=",$used_lower];
         if($used_upper!=="")$condition[]=["used_fee","<=",$used_upper];
+
+        $total_lower =isset($this->post['total_lower'])&&$this->post['total_lower']!==""? floor($this->post['total_lower']) :"0";
+        $total_upper =isset($this->post['total_upper'])&&$this->post['total_upper']!==""? floor($this->post['total_upper']):"";
+        if($total_lower!=="")$condition[]=["total_fee",">=",$total_lower];
+        if($total_upper!=="")$condition[]=["total_fee","<=",$total_upper];
          if($companyNo!==""){
             $condition[]=["companyNo","=",$companyNo];
         }
@@ -319,7 +329,7 @@ class OrderPay extends BaseController{
                 ->leftJoin("qrd_info c", "b.orderCode=c.sequenceNo")
                 ->where(["a.tradNo" => $value['tradNo'], "a.is_del" => 0])
                 ->order(['a.addtime' => 'desc', 'a.id' => 'desc'])
-                ->field("a.*,b.orderCode,c.qrdSource,goodNo,goodName,qrdType,c.ownerName,c.ownerid,c.department,c.poCode,c.customerName,c.customerNo")
+                ->field("a.*,b.orderCode,c.cxCode,c.qrdSource,goodNo,goodName,qrdType,c.ownerName,c.ownerid,c.department,c.poCode,c.customerName,c.customerNo")
                 ->select()
                 ->toArray();
             $value['child'] = $data;
@@ -331,12 +341,13 @@ class OrderPay extends BaseController{
     public function  tradeList(){
        $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']) :15;
-        $condition =[["a.is_del","=",0],["b.is_del","=",0]];
+        $condition =[["a.is_del","=",0],["b.is_del","=",0],["c.is_del","=",0],["d.is_del","=",0]];
 		 $roleid = $this->roleid;
         $check = checkRole($roleid,'87');
         if($check){
         	$condition[]=["a.apply_id","=",$this->uid];
         }
+         $platform_type =isset($this->post['platform_type'])&&$this->post['platform_type']!==""? intval($this->post['platform_type']):"";
         $name =isset($this->post['name'])&&$this->post['name']!=""? trim($this->post['name']):"";
         $bank =isset($this->post['bank'])&&$this->post['bank']!=""? trim($this->post['bank']):"";
         $start =isset($this->post['start'])&&$this->post['start']!=""? trim($this->post['start']):"";
@@ -349,6 +360,9 @@ class OrderPay extends BaseController{
         $companyNo =isset($this->post['companyNo'])&&$this->post['companyNo']!=""? trim($this->post['companyNo']):"";
          if($companyNo!==""){
             $condition[]=["a.companyNo","=",$companyNo];
+        }
+          if($platform_type!==""){
+            $condition[]=["a.platform_type","=",$platform_type];
         }
           $relaComNo= isset($this->post['relaComNo'])&&$this->post['relaComNo']!="" ? trim($this->post['relaComNo']) :"";
          if($relaComNo!=""){
@@ -359,6 +373,10 @@ class OrderPay extends BaseController{
         }
           if($orderCode!==""){
             $condition[]=["d.orderCode","like","%$orderCode%"];
+        }
+         $cxCode= isset($this->post['cxCode'])&&$this->post['cxCode']!="" ? trim($this->post['cxCode']) :"";
+         if($cxCode!=""){
+            $condition[]=["c.cxCode","like","%$cxCode%"];
         }
          $logNo =isset($this->post['logNo'])&&$this->post['logNo']!=""? trim($this->post['logNo']):"";
          if($logNo!==""){
@@ -387,18 +405,19 @@ class OrderPay extends BaseController{
         }
          $count=Db::name("trade_pool")->alias("a")
           ->leftJoin("trade b","a.tradNo=b.tradNo")
-          ->leftJoin("assoc d","a.logNo=d.viceCode AND d.is_del=0")
+          ->leftJoin("assoc d","a.logNo=d.viceCode AND d.type = 2")
           ->leftJoin("qrd_info c","d.orderCode=c.sequenceNo")
           ->where($condition)->count();
            $total=ceil($count/$size);
            $page=$page>$total? intval($total):$page;
            $list =Db::name("trade_pool")->alias("a")
            ->leftJoin("trade b","a.tradNo=b.tradNo")
-           ->leftJoin("assoc d","a.logNo=d.viceCode AND d.is_del=0")
+           ->leftJoin("assoc d","a.logNo=d.viceCode AND d.type = 2")
            	->leftJoin("qrd_info c","d.orderCode=c.sequenceNo")
            ->where($condition)
            ->page($page,$size)
-           ->field("a.*,b.trade_bank,b.trade_account,b.trade_out,b.total_fee as btotal_fee,b.used_fee,b.balance,c.customerName,c.customerNo,d.orderCode,c.qrdSource,c.goodNo,c.goodName,c.qrdType,c.ownerName,c.ownerid,c.department,c.poCode,c.platName,c.totalPrice,d.cancel_fee")
+           ->field("a.*,b.trade_bank,b.trade_account,b.trade_out,b.total_fee as btotal_fee,b.used_fee,b.balance,c.customerName,c.customerNo,
+           d.orderCode,c.qrdSource,c.cxCode,c.goodNo,c.goodName,c.qrdType,c.ownerName,c.ownerid,c.department,c.poCode,c.platName,c.totalPrice,d.cancel_fee")
            ->order("a.addtime desc")->select();
            return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
     }
@@ -409,8 +428,12 @@ class OrderPay extends BaseController{
         $apply_id =isset($this->post['apply_id'])&&$this->post['apply_id']!=""? intval($this->post['apply_id']):"";
         $apply_name =isset($this->post['apply_name'])&&$this->post['apply_name']!=""? trim($this->post['apply_name']):"";
         $companyNo =isset($this->post['companyNo'])&&$this->post['companyNo']!=""? trim($this->post['companyNo']):"";
+        $platform_type =isset($this->post['platform_type'])&&$this->post['platform_type']!==""? intval($this->post['platform_type']):"";
          if($companyNo!==""){
             $condition[]=["companyNo","=",$companyNo];
+        }
+         if($platform_type!==""){
+            $condition[]=["platform_type","=",$platform_type];
         }
           $relaComNo= isset($post['relaComNo'])&&$post['relaComNo']!="" ? trim($post['relaComNo']) :"";
          if($relaComNo!=""){
@@ -943,9 +966,11 @@ class OrderPay extends BaseController{
        Db::startTrans();
         try{
             $tra=[];
+            $i=0;
             foreach ($list as $value) {
                 $temp = [];
-                $temp["tradNo"] = makeStr('S');
+                 $i++;
+                $temp["tradNo"] = makeStr('S').str_pad($i,3,'0',STR_PAD_LEFT);
                 $temp['trade_time'] = $value['tradeTime'];
                 $temp['total_fee'] = $value['trade_fee'];
                 $temp['trade_bank'] = $value['trade_bank'];
@@ -998,12 +1023,6 @@ class OrderPay extends BaseController{
             if (!$val_item->check($value)) return error_show(1004, $val_item->getError());
 
             if (!isset($company[$value['companyNo']])) $company[$value['companyNo']] = $value['companyNo'];
-
-            if (isset($tradNos[$value['tradNo']])) $tradNos[$value['tradNo']] = bcadd($tradNos[$value['tradNo']], $value['trad_fee'], 2);
-            else $tradNos[$value['tradNo']] = $value['trad_fee'];
-
-            if (isset($orderCodes[$value['orderCode']])) $orderCodes[$value['orderCode']] = bcadd($orderCodes[$value['orderCode']], $value['trad_fee'], 2);
-            else $orderCodes[$value['orderCode']] = $value['trad_fee'];
         }
 
         //判断绑定公司
@@ -1018,91 +1037,83 @@ class OrderPay extends BaseController{
         Db::startTrans();
 
         try {
-
-            $date = date('Y-m-d H:i:s');
-            $all_trade = Db::name('trade')
+        	$i=1;
+        	//批量资金认领
+        	foreach ($list as $key=>$value){
+        		//资金明细判断
+        		$i++;
+        	   $all_trade = Db::name('trade')
                 ->where('is_del', 0)
                 ->whereIn('status', [1, 2])
-                ->whereIn('tradNo', array_keys($tradNos))
-                ->column('id,balance,used_fee,companyNo,trade_time', 'tradNo');
-
-            foreach ($tradNos as $tradNo => $fee) {
-                if (!isset($all_trade[$tradNo])) throw new Exception($tradNo . '未找到资金信息');
-                if ($all_trade[$tradNo]['balance'] < $fee) throw new Exception($tradNo . '资金余额不足核销');
-                $balance = bcsub($all_trade[$tradNo]['balance'], $fee, 2);
-                Db::name('trade')
-                    ->where('id', $all_trade[$tradNo]['id'])
+                ->where('tradNo', $value['tradNo'])
+                ->field('id,balance,used_fee,companyNo,trade_time')
+                ->findOrEmpty();
+        	   if(empty($all_trade))throw new Exception("{$value['tradNo']}资金未找到数据");
+        	   if($all_trade['balance']<$value['trad_fee'])throw new Exception("{$value['tradNo']}资金余额不足");
+        	   //订单明细判断
+        	   $all_order=Db::name('qrd_info')
+                ->where('is_del', 0)
+                ->whereIn('sequenceNo',$value['orderCode'])
+                ->field('id,customerNo,status,pay_fee,apay_fee,wpay_fee,pay_status,totalPrice,platform_type')
+                ->findOrEmpty();
+        	   if(empty($all_order))throw new Exception("{$value['orderCode']}销售单未找到数据");
+        	   if($all_order['wpay_fee']<$value['trad_fee'])throw new Exception("{$value['orderCode']}销售单未付款金额不足核销金额");
+        	    $OrderCodeToAssocNo = substr(makeNo('AS'), 0, -3).str_pad($i,3,'0',STR_PAD_LEFT);
+                $OrderCodeToLogNo = substr(makeNo('TRC'), 0, -3).str_pad($i,3,'0',STR_PAD_LEFT);
+                //资金数据更新处理
+				$balance = bcsub($all_trade['balance'], $value['trad_fee'], 2);
+                $tradeUp=Db::name('trade')
+                    ->where($all_trade)
                     ->update([
                         'balance' => $balance,
-                        'used_fee' => bcadd($all_trade[$tradNo]['used_fee'], $fee, 2),
+                        'used_fee' => bcadd($all_trade['used_fee'],  $value['trad_fee'], 2),
                         'status' => $balance == 0 ? 3 : 2,
-                        'updatetime' => $date,
+                        'updatetime' =>date("Y-m-d H:i:s"),
                     ]);
-
-            }
-
-            Db::name('trade_pool')
-                ->where(['is_del' => 0, 'status' => 1])
-                ->whereIn('tradNo', array_keys($tradNos))
-                ->update([
-                    'status' => 2,
-                    'updatetime' => $date
-                ]);
-
-            $all_qrd_info = Db::name('qrd_info')
-                ->where('is_del', 0)
-                ->whereIn('sequenceNo', array_keys($orderCodes))
-                ->column('id,customerNo,status,pay_fee,apay_fee,wpay_fee,pay_status,totalPrice', 'sequenceNo');
-            foreach ($orderCodes as $orderCode => $fee) {
-                if (!isset($all_qrd_info[$orderCode])) throw new Exception($orderCode . '销售单信息未找到');
-                if ($all_qrd_info[$orderCode]['wpay_fee'] < $fee) throw new Exception($orderCode . '销售单未付款金额不足核销金额');
-                Db::name('qrd_info')
-                    ->where('id', $all_qrd_info[$orderCode]['id'])
+               if($tradeUp==false ) throw new Exception("{$value['tradNo']}资金更新失败");
+				//订单数据更新处理
+                $orderUp=Db::name('qrd_info')
+                    ->where($all_order)
                     ->update([
-                        'apay_fee' => bcadd($all_qrd_info[$orderCode]['apay_fee'], $fee, 2),
-                        'wpay_fee' => bcsub($all_qrd_info[$orderCode]['wpay_fee'], $fee, 2),
-                        'pay_status' => 2,
+                        'apay_fee' => bcadd($all_order['apay_fee'], $value['trad_fee'], 2),
+                        'wpay_fee' => bcsub($all_order['wpay_fee'], $value['trad_fee'], 2),
+                        'pay_status' => bcsub($all_order['wpay_fee'], $value['trad_fee'], 2)==0 &&$all_order['pay_fee']==0? 3:2,
                         'status' => 1,
-                        'updatetime' => $date
+                        'updatetime' => date("Y-m-d H:i:s")
                     ]);
-
-                $OrderCodeToAssocNo[$orderCode] = makeNo('AS');
-                $OrderCodeToLogNo[$orderCode] = makeNo('TRC');
-
-                $assoc_insert_data[] = [
-                    'assocNo' => $OrderCodeToAssocNo[$orderCode],
+                if($orderUp==false ) throw new Exception("{$value['orderCode']}销售单更新失败");
+                //资金订单关联数据
+                $assoc_insert_data[]=[
+                	'assocNo' => $OrderCodeToAssocNo,
                     'apply_id' => $this->uid,
                     'apply_name' => $this->uname,
                     'type' => 2,
-                    'orderCode' => $orderCode,
-                    'customerNo' => $all_qrd_info[$orderCode]['customerNo'],
-                    'viceCode' => $OrderCodeToLogNo[$orderCode],
-                    'order_total' => $all_qrd_info[$orderCode]['totalPrice'],
-                    'vice_total' => $fee,//这个地方存疑,貌似下方cancel_fee字段以订单为维度,但是该字段以tradeNo为维度,此处订单与tradeNo无关联
-                    'cancel_fee' => $fee,
+                    'orderCode' => $value['orderCode'],
+                    'customerNo' => $all_order['customerNo'],
+                    'viceCode' => $OrderCodeToLogNo,
+                    'order_total' => $all_order['totalPrice'],
+                    'vice_total' => $value['trad_fee'],
+                    'cancel_fee' => $value['trad_fee'],
                     'status' => 2,//认领通过
-                    'addtime' => $date,
-                    'updatetime' => $date,
-                ];
-            }
-
-
-            foreach ($list as $item) {
-                $trade_pool_insert_data[] = [
-                    'logNo' => $OrderCodeToLogNo[$item['orderCode']],
-                    'tradNo' => $item['tradNo'],
-                    'companyNo' => $item['companyNo'],
-                    'customerNo' => $all_qrd_info[$item['orderCode']]['customerNo'],
+                    'addtime' => date("Y-m-d H:i:s"),
+                    'updatetime' => date("Y-m-d H:i:s"),
+                    ];
+                //资金认领数据
+                $trade_pool_insert_data[]=[
+                	'logNo' => $OrderCodeToLogNo,
+                    'tradNo' => $value['tradNo'],
+                    'platform_type' => $all_order['platform_type'],
+                    'companyNo' => $value['companyNo'],
+                    'customerNo' => $all_order['customerNo'],
                     'apply_id' => $this->uid,
                     'apply_name' => $this->uname,
-                    'trade_time' => $all_trade[$item['tradNo']]['trade_time'],
-                    'total_fee' => $item['trad_fee'],
+                    'trade_time' => $all_trade['trade_time'],
+                    'total_fee' => $value['trad_fee'],
                     'status' => 2,//2审核通过
-                    'addtime' => $date,
-                    'updatetime' => $date,
-                ];
-            }
-
+                    'addtime' => date("Y-m-d H:i:s"),
+                    'updatetime' => date("Y-m-d H:i:s"),
+                    ];
+        	}
             if ($assoc_insert_data) Db::name('assoc')->insertAll($assoc_insert_data);
             if ($trade_pool_insert_data) Db::name('trade_pool')->insertAll($trade_pool_insert_data);
 

+ 27 - 7
app/admin/controller/Payment.php

@@ -1256,12 +1256,12 @@ class Payment extends BaseController
         $remark = $post['remark']??'';
         Db::startTrans();
         try {
-
+        	$invup =["remark"=>$remark,"updatetime"=>date("Y-m-d H:i:s")];
+			if($status==3) $invup['check_time']=date("Y-m-d H:i:s");
             if(in_array($payment['invoiceType'],['normal','electronic','toll','roll']) && $status==3){
                 $status=4; //普票无需认证
             }
-            $invup =["status"=>$status,"remark"=>$remark,"updatetime"=>date("Y-m-d H:i:s")];
-            if($status==3) $invup['check_time']=date("Y-m-d H:i:s");
+            $invup['status']=$status;
             $inv =Db::name("pay_invoice")->where($payment)->update($invup);
             if($inv){
                 if($status==4){
@@ -1401,8 +1401,8 @@ class Payment extends BaseController
         $page = $page>$total? intval($total):$page;
         $list = Db::name("pay_invoice")
             ->alias("a")
-            ->leftJoin("pay b","a.payNo=b.payNo")
-            ->field("a.*,b.supplierNo")
+            ->leftJoin("pay b", "a.payNo=b.payNo")
+            ->field("a.*,b.supplierNo,b.supplierName,b.companyName,b.companyNo")
             ->where($condition)
             ->page($page,$size)
             ->order("addtime desc")
@@ -1501,6 +1501,26 @@ class Payment extends BaseController
                        if($report)$report->rmField("hpNo",$hpNo);
                     }
                 }
+                if($payinv['status']==3||$payinv['status']==2){
+                    if($payinfo['inv_fee']< $payinv['inv_fee']){
+                        Db::rollback();
+                        return error_show(1005,"对账回票申请金额有误,请确认回票申请金额");
+                    }
+                     $payupdate =[
+                            "inv_fee"=>$payinfo['inv_fee']-$payinv['inv_fee'],
+                            "winv_fee"=>$payinfo['winv_fee']+$payinv['inv_fee'],
+                             "updatetime" => date("Y-m-d H:i:s")
+                        ];
+                        $pay =Db::name("pay")->where($payinfo)->update($payupdate);
+                        if($pay==false){
+                            Db::rollback();
+                            return error_show(1003,"删除失败");
+                     }
+                      foreach ($cgdNo as $value){
+                       $report=ReportCode::where(["cgdNo"=>$value])->find();
+                       if($report)$report->rmField("hpNo",$hpNo);
+                    }
+                }
                 Db::commit();
                 return app_show(0,"删除成功");
             }
@@ -1745,7 +1765,7 @@ class Payment extends BaseController
 		->leftJoin("pay b","a.payNo=b.payNo and b.is_del=0")
 		->leftJoin("pay_invoice c","a.orderCode=c.hpNo")
 		->where(['returnCode'=>$param['returnCode']])
-		->field("a.*,b.supplierNo,b.supplierName,b.companyNo,b.companyName,b.total_fee,b.ainv_fee,b.winv_fee,b.inv_fee,c.inv_fee pay_inv_fee")
+		->field("a.*,b.supplierNo,b.supplierName,b.companyNo,b.companyName,c.check_remark,b.total_fee,b.ainv_fee,b.winv_fee,b.inv_fee,c.inv_fee pay_inv_fee")
 		->findOrEmpty();
 		return app_show(0,"退票申请获取成功",$info);
     }
@@ -2010,7 +2030,7 @@ class Payment extends BaseController
 		->leftJoin("cgd_info b","a.cgdNo=b.sequenceNo")
 		->where(["a.payNo"=>$param['payNo'],"a.status"=>1,"a.is_del"=>0])
 		->field("a.payNo'对账单号',b.sequenceNo '采购单编号',b.qrdCode '销售单编号',b.supplierName '供货商',b.companyName '业务公司',
-		b.goodName '商品名称',b.goodUnit '单位',b.goodNum '商品数量',b.goodPrice'商品单价',b.totalPrice'总货款',b.tax '税率'")
+		b.goodName '商品名称',b.goodUnit '单位',b.goodNum '商品数量',b.goodPrice'商品单价',b.totalPrice'总货款',b.tax/100 '税率',if(b.cxCode='',b.qrdCode,b.cxCode) 销售主单号")
 		->select()
 		->toArray();
 		if(empty($cgdlist))$cgdlist=["暂无数据"=>''];

+ 4 - 0
app/admin/controller/Sale.php

@@ -114,6 +114,10 @@ class Sale extends BaseController{
        $platName =  isset($post['platName'])&&$post['platName']!=''?trim($post['platName']):'';
         if($platName!=''){
             $condition[]=["a.platName","like","%$platName%"];
+        }
+       $platform_type =  isset($post['platform_type'])&&$post['platform_type']!==''?intval($post['platform_type']):'';
+        if($platform_type!==''){
+            $condition[]=["a.platform_type","=",$platform_type];
         }
 
           $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";