wugg 5 months ago
parent
commit
1985b1f1bf
2 changed files with 15 additions and 24 deletions
  1. 15 14
      app/cxinv/controller/InvoiceItem.php
  2. 0 10
      app/cxinv/model/InvoiceOrder.php

+ 15 - 14
app/cxinv/controller/InvoiceItem.php

@@ -213,19 +213,21 @@ class InvoiceItem extends Base{
             'remark|备注' =>'max:255',
         ]);
         $itemArr=  $this->model->whereIn('id',array_column($param['list'],"itemId"))->column("id,invoiceCode,order_type,balance_amount,cat_code,tax","id");
-        $orderInfo=[];
+        $cgdInfo = PayInfo::alias('a')
+                ->join('cgd_info b','a.cgdNo=b.sequenceNo','left')
+                ->join('order_category c','b.sequenceNo=c.code and b.goodNo=c.spuCode and c.order_type=2','left')
+                ->where([['a.status','=',1],['a.is_del','=',0],['a.cgdNo','in',array_column($param['list'],'code')]])
+                ->column('b.sequenceNo,b.goodNo,b.goodName,(b.goodNum-thNum) as goodNum,b.goodPrice,b.totalPrice,b.ainv_fee,b.winv_fee,b.apay_fee,b.wpay_fee,
+                c.merge_code,c.cat_code,c.cat_name,c.short_name,c.tax,c.inv_good_name',"b.sequenceNo");
+         $orderInfo=[];
         $orderItem=[];
         foreach($param["list"] as $v){
             if(!$listValid->check($v)) return  error($listValid->getError());
             if(!isset($itemArr[$v['itemId']])) return  error("发票明细不存在");
-            if(!isset($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v["code"]])){
-                  $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]= \app\admin\model\InvoiceOrder::getOrderInfo( $itemArr[$v['itemId']]['invoiceCode'],$v['code'],$param['order_type']);
-            }
-
-             if($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]->isEmpty()) return  error("发票{$itemArr[$v['itemId']]['invoiceCode']}关联订单{$v['code']}信息不存在");
-            if($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['balance_amount']<$v['total_amount']) return  error("{$v["code"]}订单金额不足");
+            if(!isset($cgdInfo[$v['code']]))return  error("订单{$v['code']}信息不存在或未对账");
+            if($cgdInfo[$v['code']]['winv_fee']<$v['total_amount']) return  error("{$v["code"]}订单金额不足");
             if($itemArr[$v['itemId']]['balance_amount']<=0) return  error("发票明细ID {$v["itemId"]} 可关联金额不足");
-            if($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['merge_code']=="") return  error("{$v["code"]}订单税目信息不存在");
+            if($cgdInfo[$v['code']]['merge_code']=="") return  error("{$v["code"]}订单税目信息不存在");
              if($itemArr[$v['itemId']]['balance_amount']<$v['total_amount']){
                 $balance = bcsub($v['total_amount'],$itemArr[$v['itemId']]['balance_amount'],2);
                 $itemArr[$v['itemId']]['balance_amount']='0';
@@ -233,10 +235,9 @@ class InvoiceItem extends Base{
                 $balance = '0';
                 $itemArr[$v['itemId']]['balance_amount'] = bcsub($itemArr[$v['itemId']]['balance_amount'],$v['total_amount'],2);
             }
-            $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['balance_amount'] =
-            bcsub($orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['balance_amount'],bcsub($v['total_amount'],$balance,2),2);
-            $tax = $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['tax'];
-            $merge_code = $orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['merge_code'];
+            $cgdInfo[$v['code']]['winv_fee'] =bcsub( $cgdInfo[$v['code']]['winv_fee'],bcsub($v['total_amount'],$balance,2),2);
+            $tax =  $cgdInfo[$v['code']]['tax'];
+            $merge_code = $cgdInfo[$v['code']]['merge_code'];
             $diff=[];
             $tax_diff=1;
             $cat_diff=1;
@@ -258,8 +259,8 @@ class InvoiceItem extends Base{
             $orderItem[]=[
                 'itemId'=>$v['itemId'],
                 'code'=>$v['code'],
-                'spuCode'=>$orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['goodNo'],
-                'good_name'=>$orderInfo[$itemArr[$v['itemId']]['invoiceCode'].$v['code']]['goodName'],
+                'spuCode'=>$cgdInfo[$v['code']]['goodNo'],
+                'good_name'=>$cgdInfo[$v['code']]['goodName'],
                 'num'=>$v['num']??0,
                 'good_price'=>$v['good_price']??0,
                 'total_amount'=>$v['total_amount'],

+ 0 - 10
app/cxinv/model/InvoiceOrder.php

@@ -49,15 +49,6 @@ class InvoiceOrder extends Base{
     }
 
     public static function getOrderInfo($code,$orderCode,$type){
-       if($type==1){
-           $info=InvoiceGood::alias('a')
-                ->join('qrd_info b','a.orderCode=b.sequenceNo','left')
-                ->join('order_category c','b.sequenceNo=c.code and b.goodNo=c.spuCode and  c.order_type=1','left')
-                ->where(["invNo"=>$code,"a.orderCode"=>$orderCode])
-                ->where([['a.goodNum','>',0],['a.is_del','=',0]])
-                ->field('b.sequenceNo,b.goodNo,b.goodName,a.goodNum,a.goodPrice,a.totalPrice,c.merge_code,c.cat_code,c.cat_name,c.short_name,c.tax,c.inv_good_name')
-                ->findOrEmpty();
-          } else{
            $payNo = PayInvoice::where(['hpNo'=>$code])->value("payNo","");
            $info = PayInfo::alias('a')
                 ->join('cgd_info b','a.cgdNo=b.sequenceNo','left')
@@ -66,7 +57,6 @@ class InvoiceOrder extends Base{
                 ->field('b.sequenceNo,b.goodNo,b.goodName,(b.goodNum-thNum) as goodNum,b.goodPrice,b.totalPrice,b.ainv_fee,b.winv_fee,b.apay_fee,b.wpay_fee,
                 c.merge_code,c.cat_code,c.cat_name,c.short_name,c.tax,c.inv_good_name')
                 ->findOrEmpty();
-        }
        return $info;
     }