request->param(); $condition = [['a.is_del',"=",0]]; $roleid = $this->roleid; $check = checkRole($roleid,'86'); if($check){ $condition[]=["a.ownerid","=",$this->uid]; } $page = isset($post['page'])&&$post['page']!==''?intval($post['page']):1; $size = isset($post['size'])&&$post['size']!==''?intval($post['size']):15; $start =isset($post['start'])&&$post['start']!==''?trim($post['start']):''; if($start!=''){ $condition[]=["a.createdTime",">=",$start." 00:00:00"]; } $end =isset($post['end'])&&$post['end']!==''?trim($post['end']):''; if($end!=''){ $condition[]=["a.createdTime","<=",$end." 23:59:59"]; } $total_min = isset($post['total_min'])&&$post['total_min']!==''?floatval($post['total_min']):''; if($total_min!==''){ $condition[]=["a.totalPrice",">=",$total_min]; } $total_max = isset($post['total_max'])&&$post['total_max']!==''?floatval($post['total_max']):''; if($total_max!==''){ $condition[]=["a.totalPrice","<=",$total_max]; } if(isset($post['is_comon'])&&$post['is_comon']!=='') $condition []=['is_comon','=',$post['is_comon']]; $cxCode =$post['cxCode']??[]; if(!empty($cxCode)){ $condition[]=["a.cxCode","in",$cxCode]; } $inv_status = isset($post['inv_status'])&&$post['inv_status']!==''?intval($post['inv_status']):''; if($inv_status!==''){ if($inv_status==0){ $condition[]=["a.inv_status","<>",3]; }else{ $condition[]=["a.inv_status","=",$inv_status]; } } $invIs = isset($post['inv_is'])&&$post['inv_is']!==''?intval($post['inv_is']):''; if($invIs!==''){ if($invIs==1){ $condition[]=["a.winv_fee","<>",0]; }else{ $condition[]=["a.winv_fee","=",0]; } } $payIs = isset($post['pay_is'])&&$post['pay_is']!==''?intval($post['pay_is']):''; if($payIs!==''){ if($payIs==1){ $condition[]=["a.wpay_fee","<>",0]; }else{ $condition[]=["a.wpay_fee","=",0]; } } $pay_status = isset($post['pay_status'])&&$post['pay_status']!==''?intval($post['pay_status']):''; if($pay_status!==''){ if($pay_status==0){ $condition[]=["a.pay_status","<>",3]; }else{ $condition[]=["a.pay_status","=",$pay_status]; } } $status = isset($post['status'])&&$post['status']!==''?intval($post['status']):''; if($status!==''){ if($status==3){ $condition[]=["a.status","<>",2]; }else{ $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!==''){ $condition[]=["a.sequenceNo","like","%$qrdNo%"]; } $department = isset($post['department'])&&$post['department']!=''?trim($post['department']):''; if($department!==''){ $condition[]=["a.department","like","%$department%"]; } $customerNo = isset($post['customerNo'])&&$post['customerNo']!=''?trim($post['customerNo']):''; if($customerNo!==''){ $condition[]=["a.customerNo","like","%$customerNo%"]; } $customer = isset($post['customer'])&&$post['customer']!=''?trim($post['customer']):''; if($customer!=''){ $condition[]=["a.customerName","like","%$customer%"]; } $companyNo = isset($post['companyNo'])&&$post['companyNo']!=''?trim($post['companyNo']):''; if($companyNo!==''){ $condition[]=["a.companyNo","=",$companyNo]; } $companyName = isset($post['companyName'])&&$post['companyName']!=''?trim($post['companyName']):''; if($companyName !=''){ $condition[]=["a.companyName","like","%$companyName%"]; } $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']) :""; if($saler!='') $condition []=["a.ownerName","like","%$saler%"]; $salerid= isset($post['salerid']) && $post['salerid']!='' ? intval($post['salerid']) :""; if($salerid!='') $condition []=["a.ownerid","=",$salerid]; $qrdtype= isset($post['qrdtype']) && $post['qrdtype']!='' ? intval($post['qrdtype']) :""; if($qrdtype!='') $condition []=["a.qrdType","=",$qrdtype]; $qrdsource= isset($post['qrdsource']) && $post['qrdsource']!='' ? intval($post['qrdsource']) :""; if($qrdsource!='') $condition []=["a.qrdSource","=",$qrdsource]; $sendstatus= isset($post['sendstatus']) && $post['sendstatus']!='' ? intval($post['sendstatus']) :""; if($sendstatus!='') $condition []=["a.sendStatus","=",$sendstatus]; $tag_id= isset($post['tag_id'])&&$post['tag_id']!=="" ? intval($post['tag_id']) :""; if($tag_id!==''){ if($tag_id==1) $condition[]=["a.inv_tag","=",1]; if($tag_id==2) $condition[]=["a.pay_tag","=",1]; if($tag_id==3) $condition[]=["a.pay_tag|inv_tag","=",1]; if($tag_id==4) $condition[]=["a.pay_tag&inv_tag","=",1]; } $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(); $total = ceil($count/$size); $page = $page>$total ? intval($total) : $page; $list =Db::name("qrd_info")->alias("a") ->leftJoin("good b","a.goodNo=b.spuCode") ->field("a.*,b.status as cat_status,b.inv_cat_name,b.inv_cat_code,b.inv_tax,b.inv_good_name,b.isZx") ->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){ $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){ $value['inv_tag_name']=$tag[4]['tag_name']??''; $value['inv_tag_id']=$tag[4]['id']??'0'; $value['inv_tag_img']=$tag[4]['tag_img']??''; $value['inv_tag_remark']=$tag[4]['tag_remark']??''; } if($value['pay_tag']==1){ $value['pay_tag_id']=$tag[3]['id']??'0'; $value['pay_tag_name']=$tag[3]['tag_name']??''; $value['pay_tag_img']=$tag[3]['tag_img']??''; $value['pay_tag_remark']=$tag[3]['tag_remark']??''; } } $value['plat_pay_fee']=0; if($value['is_comon']==1){ $tax = QrdInfo::where(['cxCode'=>$value['cxCode'],'is_comon'=>0])->findOrEmpty(); if($tax->isEmpty()==false){ $rate =$tax->totalPrice==0?0: ($tax->apay_fee/$tax->totalPrice); $value['plat_pay_fee']= round($value['totalPrice']* $rate,2); } } $value['goodNum'] = $value['goodNum'] -$value['thNum']; $value['sendNum'] = $value['sendNum'] -$value['thNum']; $invArr = Db::name("assoc") ->alias("a") ->leftJoin("invoice_good b", "a.viceCode=b.invNo AND b.orderCode =a.orderCode") ->where(["a.status" => [1, 2], "a.is_del" => 0, "a.type" => 1, "a.orderCode" => $value['sequenceNo']])->group("a.status") ->column("sum(b.goodNum) as goodNum", "a.status"); $value['inv_num'] = $invArr[1]??0; $value['ainv_num'] = $invArr[2]??0; $value['winv_num'] =$value['goodNum']- $value['inv_num']-$value['ainv_num']; $data[]=$value; } return app_show(0,"获取成功",["list"=>$data,"count"=>$count]); } public function query(){ $post =$this->request->param(); $condition = [['a.is_del',"=",0]]; $start =isset($post['start'])&&$post['start']!==''?trim($post['start']):''; if($start!=''){ $condition[]=["a.createdTime",">=",$start." 00:00:00"]; } $end =isset($post['end'])&&$post['end']!==''?trim($post['end']):''; if($end!=''){ $condition[]=["a.createdTime","<=",$end." 23:59:59"]; } $total_min = isset($post['total_min'])&&$post['total_min']!==''?floatval($post['total_min']):''; if($total_min!==''){ $condition[]=["a.totalPrice",">=",$total_min]; } if(isset($post['is_comon'])&&$post['is_comon']!=='') $condition []=['is_comon','=',$post['is_comon']]; $total_max = isset($post['total_max'])&&$post['total_max']!==''?floatval($post['total_max']):''; if($total_max!==''){ $condition[]=["a.totalPrice","<=",$total_max]; } $cxCode =$post['cxCode']??[]; if(!empty($cxCode)){ $condition[]=['a.cxCode','in',$cxCode]; } $inv_status = isset($post['inv_status'])&&$post['inv_status']!==''?intval($post['inv_status']):''; if($inv_status!==''){ if($inv_status==0){ $condition[]=["a.inv_status","<>",3]; }else{ $condition[]=["a.inv_status","=",$inv_status]; } } $invIs = isset($post['inv_is'])&&$post['inv_is']!==''?intval($post['inv_is']):''; if($invIs!==''){ if($invIs==1){ $condition[]=["a.winv_fee","<>",0]; }else{ $condition[]=["a.winv_fee","=",0]; } } $payIs = isset($post['pay_is'])&&$post['pay_is']!==''?intval($post['pay_is']):''; if($payIs!==''){ if($payIs==1){ $condition[]=["a.wpay_fee","<>",0]; }else{ $condition[]=["a.wpay_fee","=",0]; } } $pay_status = isset($post['pay_status'])&&$post['pay_status']!==''?intval($post['pay_status']):''; if($pay_status!==''){ if($pay_status==0){ $condition[]=["a.pay_status","<>",3]; }else{ $condition[]=["a.pay_status","=",$pay_status]; } } $status = isset($post['status'])&&$post['status']!==''?intval($post['status']):''; if($status!==''){ if($status==3){ $condition[]=["a.status","<>",2]; }else{ $condition[]=["a.status","=",$status]; } } $qrdNo = isset($post['sequenceNo'])&&$post['sequenceNo']!=''?trim($post['sequenceNo']):''; if($qrdNo!==''){ $condition[]=["a.sequenceNo","in",explode(",",$qrdNo)]; } $department = isset($post['department'])&&$post['department']!=''?trim($post['department']):''; if($department!==''){ $condition[]=["a.department","like","%$department%"]; } $customerNo = isset($post['customerNo'])&&$post['customerNo']!=''?trim($post['customerNo']):''; if($customerNo!==''){ $condition[]=["a.customerNo","like","%$customerNo%"]; } $customer = isset($post['customer'])&&$post['customer']!=''?trim($post['customer']):''; if($customer!=''){ $condition[]=["a.customerName","like","%$customer%"]; } $companyNo = isset($post['companyNo'])&&$post['companyNo']!=''?trim($post['companyNo']):''; if($companyNo!==''){ $condition[]=["a.companyNo","=",$companyNo]; } $companyName = isset($post['companyName'])&&$post['companyName']!=''?trim($post['companyName']):''; if($companyName !=''){ $condition[]=["a.companyName","like","%$companyName%"]; } $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']) :""; if($saler!='') $condition []=["a.ownerName","like","%$saler%"]; $salerid= isset($post['salerid']) && $post['salerid']!='' ? intval($post['salerid']) :""; if($salerid!='') $condition []=["a.ownerid","=",$salerid]; $qrdtype= isset($post['qrdtype']) && $post['qrdtype']!='' ? intval($post['qrdtype']) :""; if($qrdtype!='') $condition []=["a.qrdType","=",$qrdtype]; $qrdsource= isset($post['qrdsource']) && $post['qrdsource']!='' ? intval($post['qrdsource']) :""; if($qrdsource!='') $condition []=["a.qrdSource","=",$qrdsource]; $sendstatus= isset($post['sendstatus']) && $post['sendstatus']!='' ? intval($post['sendstatus']) :""; if($sendstatus!='') $condition []=["a.sendStatus","=",$sendstatus]; $tag_id= isset($post['tag_id'])&&$post['tag_id']!=="" ? intval($post['tag_id']) :""; if($tag_id!==''){ if($tag_id==1) $condition[]=["a.inv_tag","=",1]; if($tag_id==2) $condition[]=["a.pay_tag","=",1]; 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") ->leftJoin("good b","a.goodNo=b.spuCode") ->field("a.*,b.status as cat_status,b.inv_cat_name,b.inv_cat_code,b.inv_tax,b.inv_good_name,b.isZx") ->order("a.createdTime desc") ->where($condition)->select(); $data=[]; foreach ( $list as $ky=>$value){ $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){ $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('id desc')->column('a.id,b.tag_name,a.tag_img,a.tag_remark','b.type'); if($value['inv_tag']==1){ $value['inv_tag_name']=$tag[4]['tag_name']??''; $value['inv_tag_id']=$tag[4]['id']??'0'; $value['inv_tag_img']=$tag[4]['tag_img']??''; $value['inv_tag_remark']=$tag[4]['tag_remark']??''; } if($value['pay_tag']==1){ $value['pay_tag_id']=$tag[3]['id']??'0'; $value['pay_tag_name']=$tag[3]['tag_name']??''; $value['pay_tag_img']=$tag[3]['tag_img']??''; $value['pay_tag_remark']=$tag[3]['tag_remark']??''; } } $value['goodNum'] = $value['goodNum'] -$value['thNum']; $value['sendNum'] = $value['sendNum'] -$value['thNum']; $value['plat_pay_fee']=0; if($value['is_comon']==1){ $tax = QrdInfo::where(["cxCode"=>$value['cxCode'],"is_comon"=>0])->findOrEmpty(); if($tax->isEmpty()==false){ $rate = $tax->totalPrice==0?0: ($tax->apay_fee/$tax->totalPrice); $value['plat_pay_fee']= round($value['totalPrice']* $rate,2); } } $invArr = Db::name("assoc") ->alias("a") ->leftJoin("invoice_good b", "a.viceCode=b.invNo AND b.orderCode =a.orderCode") ->where(["a.status" => [1, 2], "a.is_del" => 0, "a.type" => 1, "a.orderCode" => $value['sequenceNo']])->group("a.status") ->column("sum(b.goodNum) as goodNum", "a.status"); $value['inv_num'] = $invArr[1]??0; $value['ainv_num'] = $invArr[2]??0; $value['winv_num'] =$value['goodNum']- $value['inv_num']-$value['ainv_num']; $data[]=$value; } return app_show(0,"获取成功",$data); } /** * 更改销售单状态 是否需要回款 0 未回款对账 1 回款对账 2 无需汇款操作 */ public function status(){ $post =$this->request->only(["sequenceNo"=>'',"status"=>0],"post","trim"); if($post['sequenceNo']==''){ return error_show(1004,"参数 sequenceNo 不能为空"); } if($post['status']===''){ return error_show(1004,"参数 status 不能为空"); } $qrdinfo =Db::name("qrd_info")->where("sequenceNo","=",$post['sequenceNo'])->findOrEmpty(); if(empty($qrdinfo)){ return error_show(1004,"未找到确认单信息"); } if ($qrdinfo['status']==1){ return error_show(1004,"确认单已参与对账"); } $update=[ "status"=>$post['status'], "updatetime"=>date("Y-m-d H:i:s") ]; $up =Db::name("qrd_info")->where($qrdinfo)->update($update); if($up){ return app_show(0,"更新成功"); }else{ return error_show(1003,"更新失败"); } } //确认单信息详情 public function saleinfo(){ $post=$this->post; $sequenceNo =isset($post['sequenceNo'])&&$post['sequenceNo']?trim($post['sequenceNo']):""; if($sequenceNo==''){ return error_show(1003,"参数 sequenceNo 不能为空"); } $qrdinfo =Db::name("qrd_info")->where("sequenceNo","=",$post['sequenceNo'])->findOrEmpty(); if(empty($qrdinfo)){ return error_show(1004,"未找到确认单信息"); } $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['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']]) ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();; } } } ; 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'); if($qrdinfo['inv_tag']==1){ $qrdinfo['inv_tag_name']=$tag[4]['tag_name']??''; $qrdinfo['inv_tag_id']=$tag[4]['id']??'0'; $qrdinfo['inv_tag_img']=$tag[4]['tag_img']??''; $qrdinfo['inv_tag_remark']=$tag[4]['tag_remark']??''; } if($qrdinfo['pay_tag']==1){ $qrdinfo['pay_tag_id']=$tag[3]['id']??'0'; $qrdinfo['pay_tag_name']=$tag[3]['tag_name']??''; $qrdinfo['pay_tag_img']=$tag[3]['tag_img']??''; $qrdinfo['pay_tag_remark']=$tag[3]['tag_remark']??''; } } $qrdinfo['goodNum'] = $qrdinfo['goodNum'] -$qrdinfo['thNum']; $qrdinfo['sendNum'] = $qrdinfo['sendNum'] -$qrdinfo['thNum']; $qrdinfo['customerAttr'] = Db::name("customer_info")->where(["companyNo"=>$qrdinfo['customerNo']])->value("parent",''); return app_show(0,"获取成功",$qrdinfo); } /**验证采销订单管联数据是否对账 * @return \think\response\Json|void */ public function OrderIsCheck(){ $post =$this->request->only(["orderCode"=>'',"isCgd"=>0,"is_cgd_check"=>0],"post","trim"); $vali=Validate::rule([ "orderCode|销售单单号"=>"require|max:255", "isCgd|是否退采购单"=>"require|in:0,1", "is_cgd_check|只退采购单"=>"in:0,1" ]); if($vali->check($post)==false) return error_show(1004,$vali->getError()); $data=[]; if($post['is_cgd_check']==0){ QrdInfo::CheckQrd($post['orderCode'],$data); CgdInfo::CheckCgd(['cxCode'=>$post['orderCode']],$data); if($post['isCgd']==1)CgdInfo::CheckCgd(['qrdCode'=>$post['orderCode']],$data); }else{ CgdInfo::CheckCgd(['sequenceNo'=>$post['orderCode']],$data); CgdInfo::CheckCgd(['is_comon'=>2,'mainCode'=>$post['orderCode']],$data); } empty($data)?$this->success("不存在对账订单"):$this->error("存在对账业务数据",1005,$data); } }