Forráskód Böngészése

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

wugg 6 hónapja
szülő
commit
a3fb2556b6

+ 19 - 8
app/admin/controller/ComonOrder.php

@@ -3,12 +3,12 @@ declare (strict_types = 1);
 
 namespace app\admin\controller;
 
-use app\admin\model\CgdInfo;use app\admin\model\CompanyInfo;
-use app\admin\model\InvoiceGood;
+use app\admin\model\CgdInfo;
+use app\admin\model\CompanyInfo;
 use app\admin\model\InvoicePay;
 use app\admin\model\InvoicePool;
 use app\admin\model\InvoicePoolInfo;
-use app\admin\model\Pay;
+use app\admin\model\OrderCategory;use app\admin\model\Pay;
 use app\admin\model\PayInfo;
 use app\admin\model\QrdInfo;
 use app\admin\model\ReportCode;
@@ -30,7 +30,7 @@ class ComonOrder extends Base
     public function __construct(App $app) {
     	parent::__construct($app);
     	$this->model = new \app\admin\model\ComonOrder();
-    	 $invoice =Config::get('invoiceType');
+    	$invoice =Config::get('invoiceType');
         $this->invoiceType = $invoice['invoiceName'];
         $this->invName = $invoice['invoiceType'];
         $this->typename = $invoice['KingName'];
@@ -39,7 +39,8 @@ class ComonOrder extends Base
     
     public function list(){
         $post = $this->request->only(["start"=>"","end"=>"","cxCode"=>"","orderCode"=>[],"customerNo"=>"",
-        'cgd_status'=>'',"companyNo"=>"",'status'=>[],'relaComNo'=>'','platform_type'=>'','inv_status'=>'','pay_status'=>'', 'page'=>1,'size'=>15],"post","trim");
+        'cgd_status'=>'',"companyNo"=>"",'status'=>[],'relaComNo'=>'','platform_type'=>'','inv_status'=>'',
+        'pay_status'=>'',"good_status"=>"", 'page'=>1,'size'=>15],"post","trim");
         $where=[["qrd.is_del","=",0],['cgd.is_del','=',0],['qrd.totalPrice','<>',0],['cgd.totalPrice','<>',0]];
         $post['start']==''?:$where[]=["comon_order.addtime",">=",date("Y-m-d 00:00:00",strtotime($post['start']))];
         $post['end']==''?:$where[]=["comon_order.addtime","<=",date("Y-m-d 23:59:59",strtotime($post['end']))];
@@ -53,7 +54,8 @@ class ComonOrder extends Base
         $post['cgd_status']===''?:$where[]=['cgd.cgd_status','=',$post['cgd_status']];
         $post['companyNo']==''?:$where[]=["comon_order.companyNo|comon_order.supplierNo","=",$post['companyNo']];
         $post['relaComNo']==''?:$where[]=["comon_order.companyNo|comon_order.supplierNo|comon_order.customerNo","=", $post['relaComNo']];
-        $list=$this->model->withJoin(["qrd","cgd"],"left")->where($where)
+        $post['good_status']===''?:$where[]=["good.status","=",$post['good_status']];
+        $list=$this->model->withJoin(["qrd","cgd","good"],"left")->where($where)
         ->order("id desc")->paginate (["page"=>$post['page'],"list_rows"=>$post['size']]);
         $this->success("0",["list"=>$list->items(),"count"=>$list->total()]);
     }
@@ -268,11 +270,20 @@ class ComonOrder extends Base
         ->toArray();
         $qrdArr= array_column($list,"qrd","cgdNo");
         $cgdArr= array_column($list,"cgd","cgdNo");
+        array_walk($qrdArr,function (&$item){
+            $item['catInfo'] = json_decode($item['catInfo'],true);
+            $item['orderTax'] = OrderCategory::where(['code' => $item['sequenceNo'], 'spuCode' => $item['goodNo']])
+               ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
+        });
+
+       array_walk($cgdArr,function (&$item){
+            $item['catInfo'] = json_decode($item['catInfo'],true);
+            $item['orderTax'] = OrderCategory::where(['code' => $item['sequenceNo'], 'spuCode' => $item['goodNo']])
+               ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
+        });
         foreach ($pay as $item){
         	
         	if(isset($qrdArr[$item['cgdNo']])==false)continue;
-        	$qrdArr[$item['cgdNo']]['catInfo'] = json_decode($qrdArr[$item['cgdNo']]['catInfo'],true);
-        	$cgdArr[$item['cgdNo']]['catInfo'] = json_decode($cgdArr[$item['cgdNo']]['catInfo'],true);
         	$cgdlist[] =$cgdArr[$item['cgdNo']];
         	 $invArr = Db::name('assoc')
                 ->alias('a')

+ 3 - 5
app/admin/controller/OrderInv.php

@@ -3,7 +3,7 @@
 
 namespace app\admin\controller;
 
-use app\admin\model\InvoiceInterface;use app\admin\model\ReportCode;
+use app\admin\model\InvoiceInterface;use app\admin\model\OrderCategory;use app\admin\model\ReportCode;
 use think\App;
 use think\Exception;
 use think\facade\Config;
@@ -1010,11 +1010,9 @@ class OrderInv extends Base{
                               $qrdinfo =Db::name("qrd_info")->where(["sequenceNo"=>$value['orderCode']])->find();
                               if($qrdinfo==false){
                                 throw  new Exception("确认单信息未找到");
-//                                  return error_show(1003,"确认单信息未找到");
                               }
                               if($qrdinfo['ainv_fee']<$value['cancel_fee']){
                                    throw  new Exception("确认单信息开票金额不足");
-//                                  return error_show(1003,"确认单信息开票金额不足");
                               }
                               $update =[
                                   "winv_fee"=>$qrdinfo['winv_fee']+$value['cancel_fee'],
@@ -1026,13 +1024,11 @@ class OrderInv extends Base{
                               $qrdup = Db::name("qrd_info")->where($qrdinfo)->update($update);
                               if($qrdup==false){
                                   throw  new Exception("确认单信息更新失败");
-//                                  return error_show(1003,"确认单信息更新失败");
                               }
                               $assoc=["status"=>3,"updatetime"=>date("Y-m-d H:i:s")];
                               $assocup =Db::name("assoc")->where($value)->update($assoc);
                               if($assocup==false){
                                   throw  new Exception("确认单关联信息更新失败");
-//                                  return error_show(1003,"确认单关联信息更新失败");
                               }
                           }
                      }else{
@@ -1648,6 +1644,8 @@ class OrderInv extends Base{
                  ->where(["a.status" => [0, 1, 2, 3], "b.orderCode" => $item['sequenceNo']])
                  ->where('a.invNo', '<>', $invNo)
                  ->sum("b.goodNum");
+             $item['orderTax'] = OrderCategory::where(['code' => $item['sequenceNo'], 'spuCode' => $item['goodNo']])
+                                                                                       ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
 			$item['winv_num'] = $item['goodNum'] - $item['ainv_num'];
 			$item['inv_num'] = $orderList[$item['sequenceNo']]['goodNum'];
         }

+ 17 - 2
app/admin/controller/OrderPay.php

@@ -265,7 +265,7 @@ class OrderPay extends Base{
     }
     //资金信息列表
     public function list(){
-        $condition=[];
+        $condition=[['is_del',"=",0]];
         $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;
         $name =isset($this->post['name'])&&$this->post['name']!=""? trim($this->post['name']):"";
@@ -333,6 +333,19 @@ class OrderPay extends Base{
         }
            return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
     }
+
+    public function  tradeDelete(){
+        $id =isset($this->post['id'])&&$this->post['id']!=""? intval($this->post['id']):"";
+        if($id==""){
+            return error_show(1004,"参数错误");
+        }
+        $trade = Db::name("trade")->where(["id"=>$id])->find();
+        if($trade){
+            $updaT=Db::name("trade")->where(["id"=>$id])->update(["is_del"=>1]);
+            if($updaT) return app_show(0,"删除成功");
+        }
+        return error_show(1004,"删除失败");
+    }
         // 认领资金列表明细
     public function  tradeList(){
        $page=isset($this->post['page'])&&$this->post['page']!="" ? intval($this->post['page']) :1;
@@ -1029,14 +1042,16 @@ class OrderPay extends Base{
                 ->findOrEmpty();
         	   if(empty($all_trade))throw new Exception("{$value['tradNo']}资金未找到数据");
         	   if($all_trade['balance']<$value['trad_fee'])throw new Exception("{$value['tradNo']}资金余额不足");
+        	   if($all_trade['companyNo']!=$value['companyNo'])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,cxCode')
+                ->field('id,customerNo,companyNo,status,pay_fee,apay_fee,wpay_fee,pay_status,totalPrice,platform_type,cxCode')
                 ->findOrEmpty();
         	   if(empty($all_order))throw new Exception("{$value['orderCode']}销售单未找到数据");
         	   if($all_order['wpay_fee']<$value['trad_fee'])throw new Exception("{$value['orderCode']}销售单未付款金额不足核销金额");
+        	  if($all_order['companyNo']!=$value['companyNo'])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);
                 //资金数据更新处理

+ 36 - 17
app/admin/controller/Payment.php

@@ -4,7 +4,7 @@ declare (strict_types = 1);
 namespace app\admin\controller;
 
 
-use app\admin\model\CgdInfo;use app\admin\model\FhdChild;use app\admin\model\GoodCombind;use app\admin\model\InvoicePay;use app\admin\model\InvoicePool;use app\admin\model\Pay;use app\admin\model\PayInfo;use app\admin\model\ReportCode;
+use app\admin\model\CgdInfo;use app\admin\model\FhdChild;use app\admin\model\GoodCombind;use app\admin\model\InvoicePay;use app\admin\model\InvoicePool;use app\admin\model\OrderCategory;use app\admin\model\Pay;use app\admin\model\PayInfo;use app\admin\model\ReportCode;
 use think\App;use think\Exception;
 use think\facade\Config;
 use think\facade\Db;
@@ -990,11 +990,15 @@ class Payment extends Base
         $size =  isset($post['size'])&&$post['size']!="" ? intval($post['size']) :10;
         
         $list = CgdInfo::alias("a")
-                       ->leftJoin("pay_info b","a.sequenceNo=b.cgdNo and b.is_del=0 and b.status=1")
-                                   ->where($condition)
-                                   ->order("a.id","desc")
-	        ->field("a.*,b.payNo")
-                                   ->paginate (["list_rows"=>$size,"page"=>$page]);
+               ->leftJoin("pay_info b","a.sequenceNo=b.cgdNo and b.is_del=0 and b.status=1")
+               ->where($condition)
+               ->order("a.id","desc")
+               ->field("a.*,b.payNo")
+               ->paginate (["list_rows"=>$size,"page"=>$page])->each(function(&$item){
+                        $item['orderTax'] = OrderCategory::where(['code' => $item['sequenceNo'], 'spuCode' => $item['goodNo']])
+                            ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
+                         $item['catInfo'] = json_decode($item['catInfo'],true);
+               });
         //校验是否开通了供应商账号
         $supplierAr=array_unique(array_column($list->items(),'supplierNo'));
         $supp_account = check_has_account_by_supplierNos($supplierAr);
@@ -1093,9 +1097,17 @@ class Payment extends Base
         $cgdinfo['goodNum'] =$cgdinfo['goodNum']- $cgdinfo['thNum'];
         $cgdinfo['sendNum'] =$cgdinfo['sendNum']- $cgdinfo['thNum'];
         $cgdinfo['child']=[];
+        $cgdinfo['orderTax']= OrderCategory::where(['code' => $cgdinfo['sequenceNo'], 'spuCode' => $cgdinfo['goodNo']])
+            ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
         $list=(new GoodCombind())->where("spuCode",$cgdinfo['goodNo'])->visible(["child"])->with(["child"])
         ->select();
-        if($list->isEmpty()==false)$cgdinfo['child']=array_column($list->toArray(),'child');
+        if($list->isEmpty()==false){
+            $cgdinfo['child']=array_column($list->toArray(),'child');
+            foreach ($cgdinfo['child'] as &$value){
+                $value['orderTax'] = OrderCategory::where(['code' => $cgdinfo['sequenceNo'], 'spuCode' => $value['spuCode']])
+                    ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
+            }
+        }
         return app_show(0,"获取成功",$cgdinfo);
     }
     //todo
@@ -1115,6 +1127,8 @@ class Payment extends Base
 	        ->where(["a.is_del"=>0,"b.is_del"=>0,"a.payNo"=>$payNo])->field("b.*")
 	        ->select()->toArray();
 	        foreach ($pay as &$value){
+	            $value['orderTax'] = OrderCategory::where(["code"=>$value['sequenceNo'],"spuCode"=>$value['goodNo']])
+                    ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
 	            $value['catInfo'] = json_decode($value['catInfo'],true);
 	            $value['goodNum'] =$value['goodNum']- $value['thNum'];
 	            $value['sendNum'] =$value['sendNum']- $value['thNum'];
@@ -1130,15 +1144,15 @@ class Payment extends Base
 		        ->field('b.*,c.outCode,c.good_name,c.spuCode,c.post_name,c.post_code')
 		        ->select()->toArray();
 	        }
-        $payinfo['pay_type']=Db::name('supplier_info')->where('code',$payinfo['supplierNo'])->value('pay_method','');
-        $payinfo['inv_tag_name']='';
-                            $payinfo['pay_tag_name']='';
-                            $payinfo['pay_tag_img']='';
-                            $payinfo['inv_tag_id']='0';
-                            $payinfo['pay_tag_id']='0';
-                            $payinfo['pay_tag_remark']='';
-                            $payinfo['inv_tag_img']='';
-                            $payinfo['inv_tag_remark']='';
+            $payinfo['pay_type']=Db::name('supplier_info')->where('code',$payinfo['supplierNo'])->value('pay_method','');
+            $payinfo['inv_tag_name']='';
+            $payinfo['pay_tag_name']='';
+            $payinfo['pay_tag_img']='';
+            $payinfo['inv_tag_id']='0';
+            $payinfo['pay_tag_id']='0';
+            $payinfo['pay_tag_remark']='';
+            $payinfo['inv_tag_img']='';
+            $payinfo['inv_tag_remark']='';
              if($payinfo['pay_tag']==1 || $payinfo['inv_tag']==1){
 	            $tag =Db::name('tag_log')->alias('a')->leftJoin('order_tag b','a.tag_id=b.id')->where
 	            (['code'=>$payNo,"a.status"=>[1,2]])->order('id desc')->column('a.id,b.tag_name,a.tag_img,a
@@ -1948,6 +1962,7 @@ class Payment extends Base
         $supp_account = check_has_account_by_supplierNos(array_unique(array_column($list, 'supplierNo')));
         foreach ($list as &$value) {
             $value['has_account'] = (int)isset($supp_account['data'][$value['supplierNo']]);
+            $value['inv_number']= \app\admin\model\InvoiceInfo::where(["hpNo"=>$value['orderCode']])->value("number",'');
         }
 		return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
     }
@@ -2275,9 +2290,13 @@ class Payment extends Base
 		if(empty($payinfo)) return error_show(1005,'对账单信息未找到');
 		$cgdlist =Db::name("pay_info")->alias("a")
 		->leftJoin("cgd_info b","a.cgdNo=b.sequenceNo")
+		->leftJoin("order_category c","a.cgdNo=c.code and order_type=2")
+		->leftJoin("good d","c.spuCode =d.spuCode")
 		->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.thNum) '商品数量',b.goodPrice'商品单价',b.totalPrice'总货款',b.tax/100 '税率',if(b.cxCode='',b.qrdCode,b.cxCode) 销售主单号")
+		b.goodUnit '单位',(b.goodNum-b.thNum) '商品数量',b.goodPrice'商品单价',b.totalPrice'总货款',
+		if(b.cxCode='',b.qrdCode,b.cxCode) 销售主单号,c.spuCode 商品编码,d.good_name 商品名称,c.cat_name 货物和劳务名称,c.merge_code 商品开票类目,c.short_name 商品和服务分类简称,
+		c.tax/100  开票税率,c.inv_good_name 开票商品名称,if(b.open_type =1,'原商品开票',if(b.open_type =2,'子商品开票','')) 开票类型")
 		->select()
 		->toArray();
 		if(empty($cgdlist))$cgdlist=["暂无数据"=>''];

+ 50 - 46
app/admin/controller/Sale.php

@@ -3,11 +3,12 @@
 
 namespace app\admin\controller;
 
-use app\admin\model\CgdInfo;use app\admin\model\InvoicePool;use app\admin\model\Pay;use app\admin\model\QrdInfo;use app\admin\model\TradePool;use think\App;
+use app\admin\model\CgdInfo;use app\admin\model\GoodCombind;use app\admin\model\InvoicePool;use app\admin\model\OrderCategory;use app\admin\model\Pay;use app\admin\model\QrdInfo;use app\admin\model\TradePool;use think\App;
 use think\facade\Db;use think\facade\Validate;
 class Sale extends Base{
-	#public $novalidate=["*"];
-    public function __construct(App $app) {parent::__construct($app);}
+    public function __construct(App $app) {
+        parent::__construct($app);
+    }
     /** 获取列表
     * @return \think\response\Json|void
     * @throws \think\db\exception\DataNotFoundException
@@ -71,15 +72,6 @@ class Sale extends Base{
         	}
         }
 
-       $apayIs =  isset($post['apay_is'])&&$post['apay_is']!==''?intval($post['apay_is']):'';
-        if($apayIs!==''){
-        	if($apayIs==1){
-        		$condition[]=['a.apay_fee','<>',0];
-        	}else{
-        		$condition[]=['a.apay_fee','=',0];
-        	}
-        }
-
         $pay_status =  isset($post['pay_status'])&&$post['pay_status']!==''?intval($post['pay_status']):'';
         if($pay_status!==''){
         	if($pay_status==0){
@@ -97,6 +89,10 @@ class Sale extends Base{
                  $condition[]=["a.status","=",$status];
             }
 
+        }
+        $poCode = isset($post['poCode']) && $post['poCode'] !== '' ? trim($post['poCode']) : '';
+        if ($poCode !== '') {
+            $condition[] = ['a.poCode', 'like', "%$poCode%"];
         }
          $qrdNo =  isset($post['sequenceNo'])&&$post['sequenceNo']!=''?trim($post['sequenceNo']):'';
         if($qrdNo!==''){
@@ -131,13 +127,7 @@ class Sale extends Base{
             $condition[]=["a.platform_type","=",$platform_type];
         }
 
-       $poCode =  isset($post['poCode'])&&$post['poCode']!==''?trim($post['poCode']):'';
-        if($poCode!==''){
-            $condition[]=["a.poCode","like","%$poCode%"];
-        }
-
-
-       $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";
+          $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";
         if($saler!='') $condition []=["a.ownerName","like","%$saler%"];
         $salerid= isset($post['salerid']) && $post['salerid']!='' ? intval($post['salerid']) :"";
         if($salerid!='') $condition []=["a.ownerid","=",$salerid];
@@ -157,7 +147,9 @@ class Sale extends Base{
         }
          $cat_status= isset($post['cat_status'])&&$post['cat_status']!=="" ? intval($post['cat_status']) :"";
          if($cat_status!=='') $condition[]=["b.status","=",$cat_status];
-        $count =Db::name("qrd_info")->alias("a")->leftJoin("good b","a.goodNo=b.spuCode")->where($condition)->count();
+        $count =Db::name("qrd_info")
+        ->alias("a")
+        ->leftJoin("good b","a.goodNo=b.spuCode")->where($condition)->count();
         $total = ceil($count/$size);
         $page = $page>$total ? intval($total) : $page;
         $list =Db::name("qrd_info")->alias("a")
@@ -166,17 +158,20 @@ class Sale extends Base{
         ->order("a.createdTime desc")
         ->where($condition)->page($page,$size)->select();
         $data=[];
+
         foreach ( $list as $ky=>$value){
+            $value['orderTax'] = OrderCategory::where(['code' => $value['sequenceNo'], 'spuCode' => $value['goodNo']])
+                                                                          ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
             $value['catInfo'] = json_decode($value['catInfo'],true);
-                            $value['inv_tag_name']='';
-                            $value['pay_tag_name']='';
-                            $value['pay_tag_img']='';
-                            $value['inv_tag_id']='0';
-                            $value['pay_tag_id']='0';
-                            $value['pay_tag_remark']='';
-                            $value['inv_tag_img']='';
-                            $value['inv_tag_remark']='';
-             if($value['pay_tag']==1 || $value['inv_tag']==1){
+            $value['inv_tag_name']='';
+            $value['pay_tag_name']='';
+            $value['pay_tag_img']='';
+            $value['inv_tag_id']='0';
+            $value['pay_tag_id']='0';
+            $value['pay_tag_remark']='';
+            $value['inv_tag_img']='';
+            $value['inv_tag_remark']='';
+            if($value['pay_tag']==1 || $value['inv_tag']==1){
 	            $tag =Db::name("tag_log")->alias("a")->leftJoin("order_tag b","a.tag_id=b.id")->where
 	            (["code"=>$value['sequenceNo'],"a.status"=>[1,2]])->order("a.id desc")->column("a.id,b.tag_name,a.tag_img,a.tag_remark","b.type");
 	            if($value['inv_tag']==1){
@@ -266,14 +261,6 @@ class Sale extends Base{
         		$condition[]=["a.wpay_fee","=",0];
         	}
         }
-//        $apayIs =  isset($post['apay_is'])&&$post['apay_is']!==''?intval($post['apay_is']):'';
-//        if($apayIs!==''){
-//            if($apayIs==1){
-//                $condition[]=['a.apay_fee','<>',0];
-//            }else{
-//                $condition[]=['a.apay_fee','=',0];
-//            }
-//        }
 
         $pay_status =  isset($post['pay_status'])&&$post['pay_status']!==''?intval($post['pay_status']):'';
         if($pay_status!==''){
@@ -326,7 +313,7 @@ class Sale extends Base{
             $condition[]=["a.platform_type","=",$platform_type];
         }
 
-          $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";
+        $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";
         if($saler!='') $condition []=["a.ownerName","like","%$saler%"];
         $salerid= isset($post['salerid']) && $post['salerid']!='' ? intval($post['salerid']) :"";
         if($salerid!='') $condition []=["a.ownerid","=",$salerid];
@@ -344,6 +331,10 @@ class Sale extends Base{
 			if($tag_id==3)  $condition[]=["a.pay_tag|inv_tag","=",1];
 			if($tag_id==4)  $condition[]=["a.pay_tag&inv_tag","=",1];
         }
+       $poCode = isset($post['poCode']) && $post['poCode'] !== '' ? trim($post['poCode']) : '';
+              if ($poCode !== '') {
+                  $condition[] = ['a.poCode', 'like', "%$poCode%"];
+              }
          $cat_status= isset($post['cat_status'])&&$post['cat_status']!=="" ? intval($post['cat_status']) :"";
          if($cat_status!=='') $condition[]=["b.status","=",$cat_status];
         $list =Db::name("qrd_info")->alias("a")
@@ -446,14 +437,27 @@ class Sale extends Base{
         $goodinfo = Db::name("good")->where(["spuCode"=>$qrdinfo["goodNo"]])->findOrEmpty();
         $qrdinfo['goodinfo'] =$goodinfo;
         $qrdinfo['catInfo'] = json_decode($qrdinfo['catInfo'],true);
-                $qrdinfo['inv_tag_name']='';
-                $qrdinfo['pay_tag_name']='';
-                $qrdinfo['pay_tag_img']='';
-                $qrdinfo['inv_tag_id']='0';
-                $qrdinfo['pay_tag_id']='0';
-                $qrdinfo['pay_tag_remark']='';
-                $qrdinfo['inv_tag_img']='';
-                $qrdinfo['inv_tag_remark']='';
+        $qrdinfo['inv_tag_name']='';
+        $qrdinfo['pay_tag_name']='';
+        $qrdinfo['pay_tag_img']='';
+        $qrdinfo['inv_tag_id']='0';
+        $qrdinfo['pay_tag_id']='0';
+        $qrdinfo['pay_tag_remark']='';
+        $qrdinfo['inv_tag_img']='';
+        $qrdinfo['inv_tag_remark']='';
+        $qrdinfo['orderTax']=OrderCategory::where(['code' => $qrdinfo['sequenceNo'], 'spuCode' => $qrdinfo['goodNo']])
+                                    ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
+        $qrdinfo['child']=[];
+        if(isset($goodinfo['isCombind'])&&$goodinfo['isCombind']==1){
+            $list=(new GoodCombind())->where('spuCode',$qrdinfo['goodNo'])->visible(['child'])->with(['child'])
+                    ->select();
+            if(!$list->isEmpty()){
+               $qrdinfo['child']=array_column($list->toArray(),'child');
+               foreach ($qrdinfo['child'] as &$value){
+                 $value['orderTax'] = OrderCategory::where(['code' => $qrdinfo['sequenceNo'], 'spuCode' => $value['spuCode']]);
+               }
+            }
+        }             ;
         if($qrdinfo['pay_tag']==1 || $qrdinfo['inv_tag']==1){
 	        $tag =Db::name('tag_log')->alias('a')->leftJoin('order_tag b','a.tag_id=b.id')
 	        ->where(['code'=>$qrdinfo['sequenceNo'],'a.status'=>[1,2]])->order('id desc')->column('a.id,b.tag_name,a.tag_img,a.tag_remark','b.type');

+ 5 - 0
app/admin/model/CgdInfo.php

@@ -13,4 +13,9 @@ class CgdInfo extends Model
     public function PayInfo(){
     	return $this->belongsTo(PayInfo::class,"sequenceNo","cgdNo")->bind(["payNo"]);
     }
+
+     public function Category()
+    {
+        return $this->belongsTo(OrderCategory::class,'sequenceNo','code')->bind(['cat_code','cat_name','cat_tax'=>'tax','inv_good_name']);
+    }
 }

+ 3 - 0
app/admin/model/ComonOrder.php

@@ -24,6 +24,9 @@ class ComonOrder extends Model
    
    public function Cgd(){
    	 return $this->belongsTo(CgdInfo::class,'cgdNo','sequenceNo');
+   }
+   public function Good(){
+   	 return $this->belongsTo(Good::class,'goodNo','spuCode');
    }
     // 检测是否已经取消
    public static function CheckCxCode($code){

+ 56 - 0
app/admin/model/OrderCategory.php

@@ -0,0 +1,56 @@
+<?php
+
+
+namespace app\admin\model;
+
+
+use think\Model;
+use think\model\concern\SoftDelete;
+class OrderCategory extends Model{
+    use SoftDelete;
+    protected $createTime = 'createTime';
+    protected $deleteTime='delete_time';
+    public function GoodInfo(){
+        return $this->belongsTo(Good::class,"spuCode","spuCode")->bind(["good_name"]);
+    }
+    public static function checkInfo($code,$orderType,$info){
+        if(!empty($info)){
+            $save=[];
+            foreach ($info as $key=>$value){
+                $ist = self::where(["code"=>$code,"order_type"=>$orderType,"spuCode"=>$value['spuCode']])->findOrEmpty();
+                if($ist->isEmpty() || $ist->cat_code==''){
+                  $Temp=[
+                      "id"=>$ist->id??null,
+                      "code"=>$code,
+                      "order_type"=>$orderType,
+                      "spuCode"=>$value['spuCode'],
+                      "cat_code"=>$value['cat_code'],
+                      "cat_name"=>$value['cat_name'],
+                      "short_name"=>$value['short_name']??"",
+                      "merge_code"=>$value['merge_code']??"",
+                      "tax"=>$value['tax'],
+                      "inv_good_name"=>$value['inv_good_name']
+                      ];
+                  $save[]=$Temp;
+                }
+            }
+            if(!empty($save)){
+                (new OrderCategory)->saveAll($save);
+            }
+        }
+    }
+
+    public static function GetTaxInfoByCode($code){
+        $info=self::with(['GoodInfo'])->where(["code"=>$code])->field(["code","spuCode","cat_code","cat_name","merge_code","short_name","tax","inv_good_name"])->select();
+        $temp=[];
+        if(!empty($info)){
+            if (is_array($code)){
+                 foreach ($info as $value){
+                        $temp[$value['code']][]=$value;
+                }
+            }else $temp= $info->toArray();
+
+        }
+        return $temp;
+    }
+}

+ 5 - 0
app/admin/model/QrdInfo.php

@@ -12,4 +12,9 @@ class QrdInfo extends Model
 {
     protected $createTime="addtime";
     protected $updateTime="updatetime";
+
+    public function Category()
+    {
+        return $this->belongsTo(OrderCategory::class,"sequenceNo",'code')->bind(["cat_code","cat_name","cat_tax"=>"tax","inv_good_name"]);
+    }
 }

+ 12 - 6
app/command/good.php

@@ -44,6 +44,7 @@ class good extends Command
     	foreach ($data as $v){
 			$is=\app\admin\model\Good::where("spuCode",$v['spuCode'])->findOrEmpty();
 			if($is->isEmpty() || ($is->isZx==1 && $is->updatetime!=$v['updatetime'])){
+
 				$array=[
 					"id"=>$is->isEmpty()?null:$is->id,
 					"spuCode"=>$v['spuCode'],
@@ -85,14 +86,16 @@ class good extends Command
 	 */
     public function goodBasic(){
     	$list =Db::connect('mysql_wsm')
-            ->name('good_basic')
+            ->name('good_basic')->alias("a")
+            ->leftJoin("good_tax b","a.spuCode=b.spuCode")
             ->withAttr("cat_id",function ($v){
             	return Db::connect('mysql_wsm')->name('cat')->where("id",$v)->value("cat_name","");
             })
             ->withAttr("good_unit",function ($m){
             	return Db::connect('mysql_wsm')->name('unit')->where("id",$m)->value("unit","");
-            })->field("spuCode,good_name,cat_id,good_unit,craft_desc,after_sales,supplierNo,companyNo,supplierName,companyName,good_img,
-            good_info_img,good_thumb_img,creater,createrid,is_stock,0 isZx,is_combind,cgd_supplier_code,cgd_supplier_name,isChild,addtime,updatetime")
+            })->field("a.spuCode,good_name,cat_id,good_unit,craft_desc,after_sales,supplierNo,companyNo,supplierName,companyName,good_img,
+            good_info_img,good_thumb_img,creater,createrid,is_stock,0 isZx,is_combind,cgd_supplier_code,cgd_supplier_name,isChild,addtime,updatetime
+            ,b.tax_id,b.tax,b.inv_good_name")
             ->where("updatetime",">=", $this->date)
             ->where("status","=", 1)
             ->select()->toArray();
@@ -102,14 +105,17 @@ class good extends Command
     public function goodZx(){
     	$list =Db::connect('mysql_wsm')
             ->name('good_zixun')
+            ->alias('a')
+            ->leftJoin('good_tax b','a.spuCode=b.spuCode')
             ->withAttr("cat_id",function ($v){
             	return Db::connect('mysql_wsm')->name('cat')->where("id",$v)->value("cat_name","");
             })
             ->withAttr("good_unit",function ($v){
             	return Db::connect('mysql_wsm')->name('unit')->where("id",$v)->value("unit","");
             })
-            ->field("spuCode,good_name,craft_desc,'' after_sales,cat_id,good_unit,supplierNo,companyNo,supplierName,companyName,good_img,
-            good_info_img,good_thumb_img,creater,createrid,0 is_stock,1 isZx,is_combind,cgd_supplier_code,cgd_supplier_name,isChild,addtime,updatetime")
+            ->field("a.spuCode,good_name,craft_desc,'' after_sales,cat_id,good_unit,supplierNo,a.companyNo,supplierName,companyName,good_img,
+            good_info_img,good_thumb_img,creater,createrid,0 is_stock,1 isZx,is_combind,cgd_supplier_code,cgd_supplier_name,isChild,
+            addtime,updatetime,b.tax_id,b.tax,b.inv_good_name")
             ->where("addtime",">=", $this->date)
             ->select()->toArray();
     	     return $this->addGood($list);
@@ -128,6 +134,6 @@ class good extends Command
     		}
     	    (new \app\admin\model\GoodCombind())->saveAll($add);
     	}
-    	
+
     }
 }

+ 27 - 4
app/command/handleCxData.php

@@ -2,7 +2,7 @@
 
 namespace app\command;
 
-use app\admin\model\ComonOrder;use think\console\Command;
+use app\admin\model\ComonOrder;use app\admin\model\OrderCategory;use think\console\Command;
 use think\console\Input;
 use think\console\Output;
 use think\Exception;
@@ -49,6 +49,11 @@ class handleCxData extends command
 					    $output->writeln("[$date]:{$result['id']}数据解析失败");
 				    	continue;
 				    }
+				    if(isset($data['inv_cat_info']) && !empty($data['inv_cat_info'])){
+                        $orderCode= $result['order_type']==1?$data['orderCode']:$data['cgdNo'];
+                        OrderCategory::checkInfo($orderCode,$result['order_type'],$data['inv_cat_info']);
+				    }
+
 				    $qrd_insert_data=$wait_insert_data=$cgd_insert_data=[];
 				    $data['cat_name']=is_array($data['cat_name']) ? $data['cat_name'] : json_decode($data['cat_name'],true);
 				    if ($result['order_type'] == 1) {
@@ -93,6 +98,7 @@ class handleCxData extends command
 									          'ownerName'=>$data['apply_name'] ,//销售员,
 									          'ownerid'=>$data['apply_id'] ,//销售员id,
 									          'department'=>$data['depart'] ,//部门,
+									           'open_type'=>$data['open_type'] ,//开模类型',
 									           'manager'=>$data['manager']??'',
                                                'managerid'=>$data['managerid']??0,
 									          'createdTime'=>$data['addtime'] ,//销售单创建时间,
@@ -104,8 +110,9 @@ class handleCxData extends command
 									          'customerName'=>$data['customer_name'] ,//客户名称,
 									          'poCode'=>$data['poNo'] ,//po编号,
 									          "is_comon"=>ComonOrder::is_common($data['orderCode']),
-									          'platName'=>$data['platform_id'] ,//平台名称,
+									          'platName'=>$data['platform_name']??'',//平台名称,
 									          'platform_type' => $data['platform_type']??'0',//平台名称,
+									          'platform_id'=>$data['platform_id']??0,//平台id,'
 									          'workCode'=>$data['workNo'] ,//业务编号,
 									          'zxCode'=>$data['zxNo'] ,//咨询单编号,
 									          'goodNo'=>$data['good_code'] ,//商品编号,
@@ -184,11 +191,15 @@ class handleCxData extends command
 									          'workCode'=>$data['workNo'] ,//业务编号,
 									          'zxCode'=>$data['zxNo'] ,//咨询单编号,
 									          'goodMaterial'=>'' ,//商品材质,
+									           'open_type'=>$data['open_type'] ,//开模类型',
 									           'is_comon'=>ComonOrder::is_common($data['orderCode']),
 									          'goodUnit'=>$data['unit'] ,//商品单位,
 									          'goodDesc'=>$data['cost_desc'] ,//工艺说明,
 									          'goodType'=>$data['good_type'] ,//商品类型,
 									          'goodModel'=>'' ,//商品型号,
+									          'platName'=>$data['platform_name']??'',//平台名称,
+									          'platform_type' => $data['platform_type']??'0',//平台名称,
+									          'platform_id'=>$data['platform_id']??0,//平台id,'
 									          'companyNo'=>$data['supplierNo'] ,//业务企业编号,
 									          'companyName'=>$data['supplier_name'] ,//业务企业名称,
 									          'customerNo'=>$data['customer_code'] ,//客户编号,
@@ -235,8 +246,9 @@ class handleCxData extends command
 							    'customerNo'=>$data['customer_code'] ,//客户编号,
 							    'customerName'=>$data['customer_name'] ,//客户名称,
 							    'poCode'=>$data['poNo'] ,//po编号,
-							    'platName'=>$data['platform_id'] ,//平台名称,
+							    'platName'=>$data['platform_name']??'',//平台名称,
 							    'platform_type' => $data['platform_type']??'0',//平台名称,
+							    'platform_id'=>$data['platform_id']??0,//平台id,'
 							    'workCode'=>$data['workNo'] ,//业务编号,
 							    'zxCode'=>$data['zxNo'] ,//咨询单编号,
 							    'goodNo'=>$data['good_code'] ,//商品编号,
@@ -267,6 +279,7 @@ class handleCxData extends command
 							    'total_plan_price'=>$data['total_origin_price_plan'] ,//成本总额,
 							    'sendNum'=>$data['send_num'] ,//已发货数量,
 							    'wsendNum'=>$data['wsend_num'] ,//未发货数量,
+							     'open_type'=>$data['open_type'] ,//开模类型',
 							    'apay_fee'=>0 ,//已付款,
 							    'pay_fee'=>0 ,//付款中
 							    'wpay_fee'=>$data['total_price'] ,//未付款,
@@ -304,7 +317,8 @@ class handleCxData extends command
 								(['qrdSend'=>$data['send_status']]);
 							}
 					
-				    } else {
+				    }
+				    else {
 					    //已存在
 					    $data['total_fee']=round($data['total_fee'],2) - $data['th_fee'] - $data['diff_fee'];
 					    $exitReport=Db::name('report_code')->where('cgdNo' , $data['cgdNo'])->findOrEmpty();
@@ -343,6 +357,8 @@ class handleCxData extends command
 									      'cgdSource'=>$data['order_source'] ,//采购单来源',
 									      'companyNo'=>$data['companyNo'] ,//业务公司编号',
 									      'companyName'=>$data['companyName'] ,//业务公司',
+									      'platform_name'=>$data['platform_name']??'',//平台名称,
+									      'platform_id'=>$data['platform_id']??0,//平台id,'
 									       'is_comon'=>isset($data['mainCode'])?2: ComonOrder::is_common($data['cgdNo']),
 									      'cgdTime'=>$data['addtime'] ,//采购下单时间',
 									      'bkCode'=>$data['bkcode'] ,//备库单编号',
@@ -403,6 +419,7 @@ class handleCxData extends command
 									      'diff_fee'=>$data['diff_fee'] ,//工差金额',
 									      'thNum'=>$data['th_num'] ,//退货数量',
 									      'th_fee'=>$data['th_fee'] ,//退货金额',
+									      "open_type"=>$data['open_type'] ,//开模类型',
 									      'check_rate'=>'' ,//修正后的税率',
 									      'is_del'=>0 ,
 									      'addtime'=>$date ,
@@ -437,10 +454,13 @@ class handleCxData extends command
 									      'goodModel'=>'' ,//商品型号',
 									       'is_comon'=>isset($data['mainCode'])?2: ComonOrder::is_common($data['cgdNo']),
 									      'goodMaterial'=>'' ,//商品材质',
+									       'open_type'=>$data['open_type'] ,//开模类型',
 									      'goodUnit'=>$data['unit'] ,//商品单位',
 									      'goodDesc'=>$data['cost_desc'] ,//工艺说明',
 									      'metalsType'=>$data['noble_metal'] ,//贵金属种类',
 									      'weight'=>$data['weight'] ,//商品重量',
+									      'platform_name'=>$data['platform_name']??'',//平台名称,
+									      'platform_id'=>$data['platform_id']??0,//平台id,'
 									      'is_diff'=>$data['is_diff'] ,//是否有工差',
 									      'deliveryDay'=>$data['delivery_day'] ,//物流天数',
 									      'workDay'=>$data['lead_time'] ,//产品工期',
@@ -497,6 +517,9 @@ class handleCxData extends command
 							    'goodType'=>$data['good_type'] ,//商品类型',
 							    'goodBrand'=>$data['brand'] ,//商品品牌',
 							    'goodModel'=>'' ,//商品型号',
+							     'open_type'=>$data['open_type'] ,//开模类型',
+							    'platform_name'=>$data['platform_name']??'',//平台名称,
+								'platform_id'=>$data['platform_id']??0,//平台id,'
 							     'is_comon'=>isset($data['mainCode'])?2: ComonOrder::is_common($data['cgdNo']),
 							    'firstCat'=>$data['cat_name'][0]['cat_name'] ?? "" ,//商品一级分类',
 							    'secCat'=>!isset($data['cat_name'][1]) ? '' : $data['cat_name'][1]['cat_name'] ,//二级分类,