Explorar el Código

Merge branch 'master-dev' of wugg/cxinv into master

wugg hace 2 años
padre
commit
4d9a3df74e

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

@@ -223,7 +223,7 @@ class Export extends BaseController
     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'] . '%'];
@@ -238,7 +238,14 @@ 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_remark 付款备注,
+            a.trade_time 交易时间,
+            a.tradNo 资金编号,a.status 状态,a.total_fee 收入金额,a.balance 未认领金额,a.used_fee 已认领金额,b.logNo 资金认领编号,
+            b.customerNo 认领企业,c.orderCode 订单编号,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')
@@ -254,7 +261,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;
         }
     }

+ 65 - 75
app/admin/controller/OrderPay.php

@@ -987,12 +987,12 @@ 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'];
+//
+//            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'];
         }
 
         //判断绑定公司
@@ -1007,91 +1007,81 @@ class OrderPay extends BaseController{
         Db::startTrans();
 
         try {
-
-            $date = date('Y-m-d H:i:s');
-            $all_trade = Db::name('trade')
+        	$i=0;
+        	//批量资金认领
+        	foreach ($list as $key=>$value){
+        		//资金明细判断
+        	   $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')
+                ->findOrEmpty();
+        	   if(empty($all_order))throw new Exception("{$value['orderCode']}销售单未找到数据");
+        	   if($all_trade['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'],
+                    '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);
 

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

@@ -1493,7 +1493,7 @@ class Payment extends BaseController
                        if($report)$report->rmField("hpNo",$hpNo);
                     }
                 }
-                if($payinv['status']==3){
+                if($payinv['status']==3||$payinv['status']==2){
                     if($payinfo['inv_fee']< $payinv['inv_fee']){
                         Db::rollback();
                         return error_show(1005,"对账回票申请金额有误,请确认回票申请金额");

+ 3 - 3
app/command/Report.php

@@ -255,7 +255,7 @@ class Report extends Command
 	private function C($param=[])
 	{
 //		$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.addtime', 'between', [$param['start'], $param['end']]];
 		if (($param['companyNo'] != '') && ($param['companyNo'] != '')) $where[] = ["a.companyNo","=",$param['companyNo']];
 		$status = [1 => '未认领', 2 => '部分认领', 3 => '全部认领'];//状态
@@ -276,7 +276,7 @@ class Report extends Command
 		          a.balance 未认领金额,
 		          a.used_fee 已认领金额,
 		          b.logNo 资金认领编号,
-		          a.customerNo 认领企业,
+		          b.customerNo 认领企业,
 		          c.orderCode 订单编号,
 		          d.poCode 平台编号,
 		          d.goodName 产品名称,
@@ -284,7 +284,7 @@ class Report extends Command
 		          c.apply_name 认领创建人,
 		          b.status 认领审批状态,
 		          b.remark 驳回原因')
-		          ->leftJoin('trade_pool b', 'b.tradNo=a.tradNo')
+		          ->leftJoin('trade_pool b', 'b.tradNo=a.tradNo and b.is_del=0')
 		          ->leftJoin('assoc c', 'c.viceCode=b.logNo and c.type=2 and c.status<>3')
 		          ->leftJoin('qrd_info d', 'd.sequenceNo=c.orderCode')
 		          ->where($where)