wugg 1 年間 前
コミット
e1b98f51c2

+ 10 - 4
app/admin/command/downredinvres.php

@@ -25,23 +25,25 @@ class downredinvres extends Command
     {
 		$GetOrderInfoAndInvoiceInfo= Cache::store("redis")->get("downredinvres");
        if($GetOrderInfoAndInvoiceInfo==1) return '';
-       	Cache::store("redis")->set("downredinvres",1,180);
+       	Cache::store("redis")->set("downredinvres",1,60);
         Db::startTrans();
         $date= date("Y-m-d H:i:s");
         $row =Db::name("invoice_red")->where(["status"=>1,"is_del"=>0])->where("updatetime","<=",date("Y-m-d H:i:s"))
         ->lock(true)->findOrEmpty();
-        var_dump($row);
         if(empty($row)) {
         	Db::rollback();
         	return '';
         }
         try{
-		$data=["updatetime"=>date("Y-m-d H:i:s",time()+3600)];
+		$data=["updatetime"=>date("Y-m-d H:i:s",time()+600)];
         $opendatetime =date("Ymd",strtotime($row['addtime']));
         $ebddatetime =date("Ymd",strtotime("+2 days",strtotime($row['addtime'])));
 		$invoice=Config::get("invoice");
 		$Tax =new \TaxInvoice($invoice['appKey'],$invoice['appSecret'],$invoice['entCode']);
-		$pch= randomkeys(26).date("YmdHis");
+		if($row['addtime']==$row['updatetime']){
+			$row['SQBSCQQPCH']=randomkeys(26).date("YmdHis");
+			$data['SQBSCQQPCH']=$row['SQBSCQQPCH'];
+		}
 		$result=$Tax->DownloadRedInvoiceApplicationResult($row['SQBSCQQPCH'],$row['XHFSBH'],$row['FPLXDM'],$opendatetime,$opendatetime);
 		if(isset($result['ZTDM']) && $result['ZTDM']=='060000'){
 			if(isset($result['HZSQDXZZXX']) && !empty($result['HZSQDXZZXX'])){
@@ -51,6 +53,10 @@ class downredinvres extends Command
 						$data['status']=2;
 						$data['XXBBH']=$resultChild['XXBBH'];
 						$data['remark']=$resultChild['ZTXX'];
+					}elseif($resultChild['ZTDM']=='069999'){
+						$data['status']=5;
+						$data['XXBBH']=$resultChild['XXBBH'];
+						$data['remark']=$resultChild['ZTXX'];
 					}else{
 						$data['status']=1;
 						$data['XXBBH']=$resultChild['XXBBH'];

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

@@ -107,12 +107,12 @@ class ExecStat extends \app\admin\BaseController{
 	}
 		public function actionList(){
 		$ation=[
-
 			["action"=>"Q","name"=>'产品部门销售业绩'],
 			["action"=>"R","name"=>'采购部门销售业绩'],
 			["action"=>"L","name"=>'客服部提成业绩'],
 			["action"=>"S","name"=>'项目部提成业绩'],
 			["action"=>"T","name"=>'新媒体提成业绩'],
+			["action"=>"U","name"=>'项目部2月前提成业绩'],
 			];
 		return app_show(0,"获取成功",$ation);
 	}

+ 142 - 73
app/command/Report.php

@@ -122,6 +122,10 @@ class Report extends Command
 		        $method="T";
 		        $file='新媒体业绩提成';
 		        break;
+		    case 'U':
+		        $method="U";
+		        $file='项目部2月前业绩提成';
+		        break;
 			default:
 				$file='暂无数据';
 				$method="";
@@ -983,7 +987,6 @@ class Report extends Command
 		if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['b.updatetime', 'between', [date("Y-m-d 00:00:00",strtotime($param['start'])),date("Y-m-d 23:59:59",strtotime($param['end']))]];
 		$list = Db::name("qrd_info")->alias("a")
 		->rightJoin("assoc b","a.sequenceNo=b.orderCode")
-//		->leftJoin("cgd_info c","c.sequenceNo = a.cgdNo and c.is_del=0")
 		->field("	a.department 部门,
 	a.ownerName 销售人员,
 	platName 平台类型,
@@ -1005,78 +1008,97 @@ class Report extends Command
 	b.cancel_fee 回款金额,
 	ceil(DATEDIFF(b.updatetime,a.createdTime)/30) 账期,
 	a.ownerName 实际销售人员,
-	0 提成金额
+	'' 账期回款系数,
+	'' 一级类型,
+	'' 提成系数,
+	'' 明细总提成
 	")
 		->where($where)->cursor();
-		$returnpay =[
-			3=>1,
-			4=>0.6,
-			5=>0.4,
-			6=>0,
-		];
-		$cat=[
-			0.0036,//常规分类
-			0.0002,//非常规
-			0.0018];//会议分类
 			$normal=['贵金属','工艺收藏','数码电子','大家电'];
 			$huiyi=['会议培训制品','会议培训展会服务'];
 		foreach ($list as $value){
 			$totalPrice=$value['回款金额'];
-			$rate=getPayRate($value['账期']);
-			$cat_rate=0.0036;
-			if(in_array($value['一级分类'],$normal)) $cat_rate=0.0002;
-			if(in_array($value['一级分类'],$huiyi)) $cat_rate=0.0018;
-			$value['提成'] = bcmul(bcmul($totalPrice ,$rate),$cat_rate,4);
+			$value['账期回款系数']=getPayRate($value['账期']);
+			$value['一级类型']='常规分类';
+			$value['提成系数']=0.0036;
+			if(in_array($value['一级分类'],$normal)) {
+				$value['一级类型']='非常规分类';
+				$value['提成系数']=0.0002;
+			}
+			if(in_array($value['一级分类'],$huiyi)){
+				$value['一级类型']='会议分类';
+				$value['提成系数']=0.0018;
+			}
+			$value['明细总提成'] = bcmul(bcmul($totalPrice ,$value['账期回款系数']),$value['提成系数'],4);
 			yield $value;
 		}
 	}
 
 	//项目部业绩 53项目部@普润心堂
 	private function S($param=[]){
-		$where = [["b.is_del","=",0],["a.is_del","=",0],["b.status","=",2],["b.type","=",2],["a.ownerid","in",getUidByDepartId(53)]];
+		$where = [
+			["b.is_del","=",0],
+			["a.is_del","=",0],
+			["b.status","=",2],
+			["b.type","=",2],
+			["a.createdTime",">=",'2023-02-01 00:00:00'], //二月之后订单
+			["a.ownerid","in",getUidByDepartId(53)]
+			];
 		if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['b.updatetime', 'between', [date("Y-m-d 00:00:00",strtotime($param['start'])),date("Y-m-d 23:59:59",
 		strtotime($param['end']))]];
 		$list = Db::name("qrd_info")->alias("a")
 		->rightJoin("assoc b","a.sequenceNo=b.orderCode")
 		->leftJoin("cgd_info c","c.sequenceNo = a.cgdNo and c.is_del=0")
 		->field("	a.department 部门,
-	a.ownerName 销售人员,
-	platName 平台类型,
-	a.companyName 公司名称,
-	if(qrdType=1,'库存',if(qrdType=2,'非库存','咨询')) 订单类型,
-	a.sequenceNo 确认单编号,
-	a.cgdNo 采购单编号,
-	customerAttr 客户属性,
-	branch 客户分公司,
-	customerName 客户名称,
-	a.goodName 产品名称,
-	a.goodNo,
-	a.firstCat 一级分类,
-	a.goodPrice 销售单价,
-	if(a.cxCode='',a.sequenceNo,a.cxCode)  原销售单号,
-	ifnull(c.goodPrice,0) 采购单价,
-	a.goodNum 下单数量,
-	a.totalPrice 销售总额,
-	a.createdTime 销售下单时间,
-	b.updatetime 回款日期,
-	b.cancel_fee 回款金额,
-	ceil(DATEDIFF(b.updatetime,a.createdTime)/30) 账期,
-	'' 项目经理,
-	0 总提成,
-	0 个人提成,
-	0 经理提成
-	")
-		->where($where)->cursor();
+						a.ownerName 销售人员,
+						platName 平台类型,
+						a.companyName 公司名称,
+						if(qrdType=1,'库存',if(qrdType=2,'非库存','咨询')) 订单类型,
+						a.sequenceNo 确认单编号,
+						a.cgdNo 采购单编号,
+						customerAttr 客户属性,
+						branch 客户分公司,
+						customerName 客户名称,
+						a.goodName 产品名称,
+						a.goodNo,
+						a.firstCat 一级分类,
+						a.goodPrice 销售单价,
+						if(a.cxCode='',a.sequenceNo,a.cxCode)  原销售单号,
+						ifnull(c.goodPrice,0) 采购单价,
+						a.goodNum 下单数量,
+						a.totalPrice 销售总额,
+						a.createdTime 销售下单时间,
+						b.updatetime 回款日期,
+						b.cancel_fee 回款金额,
+						ceil(DATEDIFF(b.updatetime,a.createdTime)/30) 账期,
+						'' 项目经理,
+						'' 账期回款系数,
+						'' 毛利率,
+						'' 毛利率区间,
+						'' 毛利率提成系数,
+						'' 明细总提成,
+						'' 明细提成30%,
+						'' 明细提成70%
+				")->where($where)->cursor();
+		$ladder = [
+			"0"=>"X<10",
+			"0.003"=>"10%≤X≤18%",
+			"0.006"=>"18%<X≤20%",
+			"0.012"=>"20%<X≤25%",
+			"0.02"=>"25%<X≤30%",
+			"0.035"=>"X>30%",
+		];
 		foreach ($list as $value){
 			if($value['订单类型']=='库存' &&$value['采购单编号']=='' && $value['采购单价']==0){
 				$value['采购单价'] = Db::name("cgd_info")->where(["goodNo"=>$value['goodNo'],"cgdSource"=>0])->order("id desc")->value("goodPrice",0);
 			}
-			$sale_rate = (1-bcdiv($value['采购单价'],$value['销售单价'],4))*100;
-			$laddrate =getLadderRate($sale_rate);
-			$rate=getPayRate($value['账期']);
-			$value['总提成']= bcmul(bcmul($value['回款金额'] ,$rate),$laddrate,4);
-			$value['个人提成']= bcmul(bcmul(bcmul($value['回款金额'] ,$rate),$laddrate,4),0.3,4);
-			$value['经理提成']= bcmul(bcmul(bcmul($value['回款金额'] ,$rate),$laddrate,4),0.7,4);
+			$value['账期回款系数']=getPayRate($value['账期']);
+			$value['毛利率'] = (1-bcdiv($value['采购单价'],$value['销售单价'],4))*100;
+			$value['毛利率区间'] =$ladder[$value['毛利率']];
+			$value['毛利率提成系数'] =getLadderRate($value['毛利率']);
+			$value['明细总提成']= bcmul(bcmul($value['回款金额'] ,$value['账期回款系数']),$value['毛利率提成系数'],4);
+			$value['明细提成30%']= bcmul(bcmul(bcmul($value['回款金额'] ,$value['账期回款系数']),$value['毛利率提成系数'],4),0.3,4);
+			$value['明细提成70%']= bcmul(bcmul(bcmul($value['回款金额'] ,$value['账期回款系数']),$value['毛利率提成系数'],4),0.7,4);
 			yield $value;
 		}
 	}
@@ -1089,28 +1111,75 @@ class Report extends Command
 		$list = Db::name("qrd_info")->alias("a")
 		->rightJoin("assoc b","a.sequenceNo=b.orderCode")
 		->leftJoin("cgd_info c","c.sequenceNo = a.cgdNo and c.is_del=0")
-		->field("	a.department 部门,
-	a.ownerName 销售人员,
-	platName 平台类型,
-	a.companyName 公司名称,
-	if(qrdType=1,'库存',if(qrdType=2,'非库存','咨询')) 订单类型,
-	a.sequenceNo 确认单编号,
-	a.cgdNo 采购单编号,
-	customerAttr 客户属性,
-	branch 客户分公司,
-	customerName 客户名称,
-	a.goodName 产品名称,
-	a.firstCat 一级分类,
-	a.goodPrice 销售单价,
-	if(a.cxCode='',a.sequenceNo,a.cxCode)  原销售单号,
-	ifnull(c.goodPrice,0) 采购单价,
-	a.goodNum 下单数量,
-	a.totalPrice 销售总额,
-	a.createdTime 销售下单时间,
-	b.updatetime 回款日期,
-	b.cancel_fee 回款金额,
-	ceil(DATEDIFF(b.updatetime,a.createdTime)/30) 账期")
-		->where($where)->cursor();
+		->field("	
+		a.department 部门,
+		a.ownerName 销售人员,
+		platName 平台类型,
+		a.companyName 公司名称,
+		if(qrdType=1,'库存',if(qrdType=2,'非库存','咨询')) 订单类型,
+		a.sequenceNo 确认单编号,
+		a.cgdNo 采购单编号,
+		customerAttr 客户属性,
+		branch 客户分公司,
+		customerName 客户名称,
+		a.goodName 产品名称,
+		a.firstCat 一级分类,
+		a.goodPrice 销售单价,
+		if(a.cxCode='',a.sequenceNo,a.cxCode)  原销售单号,
+		ifnull(c.goodPrice,0) 采购单价,
+		a.goodNum 下单数量,
+		a.totalPrice 销售总额,
+		a.createdTime 销售下单时间,
+		b.updatetime 回款日期,
+		b.cancel_fee 回款金额,
+		ceil(DATEDIFF(b.updatetime,a.createdTime)/30) 账期
+		")->where($where)->cursor();
+		foreach ($list as $value){
+			if($value['订单类型']=='库存' &&$value['采购单编号']=='' && $value['采购单价']==0){
+				$value['采购单价'] = Db::name("cgd_info")->where(["goodNo"=>$value['goodNo'],"cgdSource"=>0])->order("id desc")->value("goodPrice",0);
+			}
+			yield $value;
+		}
+	}
+
+	//项目部2月之前订单
+	private function U($param=[]){
+		$where = [
+			["b.is_del","=",0],
+			["a.is_del","=",0],
+			["b.status","=",2],
+			["b.type","=",2],
+			["a.createdTime","<=",'2023-02-01 00:00:00'], //二月之前订单
+			["a.ownerid","in",getUidByDepartId(53)]
+			];
+		if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['b.updatetime', 'between', [date("Y-m-d 00:00:00",strtotime($param['start'])),date("Y-m-d 23:59:59",
+		strtotime($param['end']))]];
+		$list = Db::name("qrd_info")->alias("a")
+		->rightJoin("assoc b","a.sequenceNo=b.orderCode")
+		->leftJoin("cgd_info c","c.sequenceNo = a.cgdNo and c.is_del=0")
+		->field("	
+		a.department 部门,
+		a.ownerName 销售人员,
+		platName 平台类型,
+		a.companyName 公司名称,
+		if(qrdType=1,'库存',if(qrdType=2,'非库存','咨询')) 订单类型,
+		a.sequenceNo 确认单编号,
+		a.cgdNo 采购单编号,
+		customerAttr 客户属性,
+		branch 客户分公司,
+		customerName 客户名称,
+		a.goodName 产品名称,
+		a.firstCat 一级分类,
+		a.goodPrice 销售单价,
+		if(a.cxCode='',a.sequenceNo,a.cxCode)  原销售单号,
+		ifnull(c.goodPrice,0) 采购单价,
+		a.goodNum 下单数量,
+		a.totalPrice 销售总额,
+		a.createdTime 销售下单时间,
+		b.updatetime 回款日期,
+		b.cancel_fee 回款金额,
+		ceil(DATEDIFF(b.updatetime,a.createdTime)/30) 账期
+		")->where($where)->cursor();
 		foreach ($list as $value){
 			if($value['订单类型']=='库存' &&$value['采购单编号']=='' && $value['采购单价']==0){
 				$value['采购单价'] = Db::name("cgd_info")->where(["goodNo"=>$value['goodNo'],"cgdSource"=>0])->order("id desc")->value("goodPrice",0);

+ 4 - 3
app/command/stat.php

@@ -26,7 +26,8 @@ class stat extends Command
 		$companyNo='GS2203161855277894' ;
 		$date=date("Y-m-d");
 		$depart= Db::connect("mysql_sys")->name("company_item")->where(["id"=>$daprtid])->column("name","id");
-		$company= Db::connect("mysql_sys")->name("company_info")->where(["companyNo"=>$companyNo])->column("company_name","companyNo");
+		$company= Db::connect("mysql_sys")->name("business")->where(["companyNo"=>$companyNo])->column
+		("company","companyNo");
 		foreach ($depart as $itmeid=>$depart_name){
 			$ist=Db::name("depart_everyday")->where(["depart_id"=>$itmeid,'companyNo'=>$companyNo,"day_time"=>$date])
 			                                ->findOrEmpty();
@@ -69,8 +70,8 @@ class stat extends Command
 	public  function GetData($uid,$companyNo,$date,$type=0):array{
 
 		$where=[];
-		if($type==1) $where=["cxCode","=",''];
-		if($type==2) $where=["cxCode","<>",''];
+		if($type==1) $where[]=["cxCode","=",''];
+		if($type==2) $where[]=["cxCode","<>",''];
 		$day_total =Db::name("qrd_info")->where([["ownerid","in",$uid],["is_del","=",0],['companyNo',"=",$companyNo]])
 		                         ->whereDay("createdTime",$date)
 		                         ->where($where)

+ 1 - 0
app/common.php

@@ -726,6 +726,7 @@ if(!function_exists("getPayRate")){
 	function getPayRate($payday=0){
 				$rate=0;
 			switch ($payday){
+				case 0:
 				case 1:
 				case 2:
 				case 3: