wugg 1 年間 前
コミット
c44edc4013

+ 4 - 6
app/admin/controller/Exec.php

@@ -12,7 +12,7 @@ class Exec extends \app\admin\BaseController{
 
 	public function list(){
 		$param=$this->request->param(["name"=>"","type"=>"","status"=>"","companyNo"=>"",'relaComNo'=>'',"page"=>1,"size"=>15],"post","trim");
-		$conditon =[["is_del","=",0]];
+		$conditon =[["is_del","=",0],["type","=",0]];
 		if($param['name']!='')$conditon[]=["name","like","%{$param['name']}%"];
 		if($param['type']!='')$conditon[]=["type","=",$param['type']];
 		if($param['companyNo']!='')$conditon[]=["companyNo","=",$param['companyNo']];
@@ -27,7 +27,7 @@ class Exec extends \app\admin\BaseController{
 
 	public function query(){
 		$param=$this->request->param(["name"=>"","status"=>"","companyNo"=>"",'relaComNo'=>'',"type"=>""],"post","trim");
-		$conditon =[["is_del","=",0]];
+		$conditon =[["is_del","=",0],["type","=",0]];
 		if($param['name']!='')$conditon[]=["name","like","%{$param['name']}%"];
 		if($param['type']!='')$conditon[]=["type","=",$param['type']];
 		if($param['status']!=='')$conditon[]=["status","=",$param['status']];
@@ -115,7 +115,7 @@ class Exec extends \app\admin\BaseController{
 
 	public function loglist(){
 		$param=$this->request->param(["name"=>"","apply_name"=>"","status"=>"","action"=>"","type"=>"","companyNo"=>"",'relaComNo'=>'',"page"=>1,"size"=>15],"post","trim");
-		$where=[["is_del","=",0],["addtime",">=",date("Y-m-d H:i:s",strtotime("-30 day"))]];
+		$where=[["is_del","=",0],["type","in",[1,2]],["addtime",">=",date("Y-m-d H:i:s",strtotime("-30 day"))]];
 		$check = checkRole($this->roleid,147);
         if($check){
             $where[]=["apply_id","=",$this->uid];
@@ -158,9 +158,7 @@ class Exec extends \app\admin\BaseController{
 			["action"=>"K","name"=>'采购单明细表'],
 			["action"=>"M","name"=>'对账单汇总表'],
 			["action"=>"N","name"=>'退货台账'],
-			["action"=>"Q","name"=>'产品部门销售业绩'],
-			["action"=>"R","name"=>'采购部门销售业绩'],
-			["action"=>"L","name"=>'提成业绩'],
+
 			];
 		return app_show(0,"获取成功",$ation);
 	}

+ 119 - 0
app/admin/controller/ExecStat.php

@@ -0,0 +1,119 @@
+<?php
+
+
+namespace app\admin\controller;
+
+
+use think\App;
+use think\facade\Db;
+use think\facade\Validate;
+class ExecStat extends \app\admin\BaseController{
+	public function __construct(App $app) {parent::__construct($app);}
+
+	public function list(){
+		$param=$this->request->param(["name"=>"","type"=>"","status"=>"","companyNo"=>"",'relaComNo'=>'',"page"=>1,"size"=>15],"post","trim");
+		$conditon =[["is_del","=",0],["type","=",3]];
+		if($param['name']!='')$conditon[]=["name","like","%{$param['name']}%"];
+		if($param['status']!=='')$conditon[]=["status","=",$param['status']];
+		$count=Db::name("exec")->where($conditon)->count();
+		$total = ceil($count/$param['size']);
+		$page =$param['page']>=$total ?intval($total) :intval($param['page']);
+		$list=Db::name("exec")->where($conditon)->page($page,intval($param['size']))->select()->toArray();
+		return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
+	}
+
+	public function query(){
+		$param=$this->request->param(["name"=>"","status"=>"","companyNo"=>"",'relaComNo'=>'',"type"=>""],"post","trim");
+		$conditon =[["is_del","=",0],["type","=",3]];
+		if($param['name']!='')$conditon[]=["name","like","%{$param['name']}%"];
+		if($param['status']!=='')$conditon[]=["status","=",$param['status']];
+//		if($param['companyNo']!='')$conditon[]=["companyNo","=",$param['companyNo']];
+//		if($param['relaComNo']!='')$conditon[]=["companyNo","=",$param['relaComNo']];
+		$list=Db::name("exec")->where($conditon)->select()->toArray();
+		return app_show(0,"获取成功",$list);
+	}
+	public function add(){
+		$param=$this->request->param(["name"=>"","companyNo"=>"",'relaComNo'=>'',"action"=>''],"post","trim");
+		$valid=Validate::rule([
+			"name|脚本名称"=>'require|max:255',
+			]);
+		if($valid->check($param)==false) return error_show(1004,$valid->getError());
+		$ist =Db::name("exec")->where(["name"=>$param['name'],"type"=>3,"is_del"=>0])->findOrEmpty();
+		if(!empty($ist))return error_show(1004,"同类型脚本名称已存在");
+		$data=[
+			"name"=>$param['name'],
+			"apply_name"=>$this->uname,
+			"apply_id"=>$this->uid,
+			"companyNo"=>'',
+			"companyName"=>'',
+			"action"=>$param["action"]??"",
+			"type"=>3,//行政业绩报表
+			"status"=>0,
+			"addtime"=>date("Y-m-d H:i:s"),
+			"updatetime"=>date("Y-m-d H:i:s")
+			];
+		$insert=Db::name("exec")->insert($data);
+		return $insert? app_show("0","新建成功"):app_show("1004","新建失败");
+	}
+//新建脚本数据
+	public function addlog(){
+		$param=$this->request->param(["id"=>"","start"=>"","end"=>"","companyNo"=>"",'relaComNo'=>'',"type"=>""],"post","trim");
+		$valid=Validate::rule([
+			"id|脚本ID"=>'require|number|gt:0',
+			"start|起始时间"=>'require|dateFormat:Y-m-d',
+			"end|结束时间"=>'require|dateFormat:Y-m-d|gt:start',
+			"type|执行类型"=>'require|number|in:3,4',
+			]);
+		if($valid->check($param)==false) return error_show(1004,$valid->getError());
+		$exec =Db::name("exec")->where("id",$param['id'])->findOrEmpty();
+		if(empty($exec)) return error_show(1004,'未找到脚本数据');
+		if($exec['action']=='') return error_show(1004,'后端脚本还未上线');
+		$data=[
+			"name"=>$exec['name'],
+			"companyNo"=>'',
+			"companyName"=>'',
+			"start"=>date("Y-m-d 00:00:00",strtotime($param['start'])),
+			"end"=>date("Y-m-d 23:59:59",strtotime($param['end'])),
+			"apply_id"=>$this->uid,
+			"apply_name"=>$this->uname,
+			"action"=>$exec['action'],
+			"down_url"=>'',
+			"status"=>1,
+			"remark"=>'',
+			"type"=>$param["type"],
+			"expiretime"=>$param["type"]==3? date("Y-m-d H:i:s"):date("Y-m-d 22:00:00"),
+			"addtime"=> date("Y-m-d H:i:s"),
+			"updatetime"=> date("Y-m-d H:i:s")
+		];
+
+		$in=Db::name("exec_log")->insert($data);
+		return $in? app_show("0","新建成功"):app_show("1004","新建失败");
+	}
+
+	public function loglist(){
+		$param=$this->request->param(["name"=>"","apply_name"=>"","status"=>"","action"=>"","type"=>"","companyNo"=>"",'relaComNo'=>'',"page"=>1,"size"=>15],"post","trim");
+		$where=[["is_del","=",0],["type","in",[3,4]],["addtime",">=",date("Y-m-d H:i:s",strtotime("-30 day"))]];
+		if($param['name']!='')$where[]=["name","like","%{$param['name']}%"];
+		if($param['apply_name']!='')$where[]=["apply_name","like","%{$param['apply_name']}%"];
+		if($param['type']!='')$where[]=["type","=",$param['type']];
+		if($param['status']!='')$where[]=["status","=",$param['status']];
+		if($param['action']!='')$where[]=["action","=",$param['action']];
+		$count=Db::name("exec_log")->where($where)->count();
+		$total = ceil($count/$param['size']);
+		$page =$param['page']<=$total ? intval($param['page']):intval($total);
+		$list=Db::name("exec_log")->where($where)->page($page,intval($param['size']))->order("id desc")->select()
+		->toArray();
+		return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
+	}
+		public function actionList(){
+		$ation=[
+
+			["action"=>"Q","name"=>'产品部门销售业绩'],
+			["action"=>"R","name"=>'采购部门销售业绩'],
+			["action"=>"L","name"=>'客服部提成业绩'],
+			["action"=>"S","name"=>'项目部提成业绩'],
+			["action"=>"T","name"=>'新媒体提成业绩'],
+			];
+		return app_show(0,"获取成功",$ation);
+	}
+}

+ 6 - 3
app/admin/route/app.php

@@ -233,9 +233,12 @@ Route::rule('execloglist','admin/Exec/loglist');//脚本执行记录列表
 Route::rule('execlogdel','admin/Exec/logdel');//脚本执行记录删除
 Route::rule('execaction','admin/Exec/actionList');//后端已上线脚本
 
-
-
-
+Route::rule('execstatlist','admin/ExecStat/list');//脚本列表
+Route::rule('execstatadd','admin/ExecStat/add');//脚本新建
+Route::rule('execstatall','admin/ExecStat/query');//脚本列表全部
+Route::rule('execstatlogadd','admin/ExecStat/addlog');//添加脚本执行记录
+Route::rule('execstatloglist','admin/ExecStat/loglist');//脚本执行记录列表
+Route::rule('execstataction','admin/ExecStat/actionList');//后端已上线脚本
 
 route::rule("interadd","admin/InterOrder/create");//网络部录单
 route::rule("interedit","admin/InterOrder/save");//网络部录单

+ 2 - 2
app/command/CopySupplier.php

@@ -133,7 +133,7 @@ class CopySupplier extends Command
                             'address' => $supplier['addr']??"",
                             'return_ticket' => $supplier['ticket_type'],
                             'delivery' => $this->_delaway[$supplier['delivery_way']]??"",
-                            'status' => $supplier['status']??1,
+                            'status' => 1,
                             'addtime' => $supplier['addtime']??date("Y-m-d H:i:s"),
                             'updatetime' => $supplier['updatetime']??date("Y-m-d H:i:s"),
                             'registercode' => $supplier['registercode']??"",
@@ -160,7 +160,7 @@ class CopySupplier extends Command
                             'address' => $supplier['addr'],
                             'return_ticket' => $supplier['ticket_type'],
 							'delivery' => $this->_delaway[$supplier['delivery_way']]??"",
-                            'status' => $supplier['status'],
+                            'status' => 1,
                             'addtime' => $supplier['addtime'],
                             'updatetime' => $supplier['updatetime'],
                             'registercode' => $supplier['registercode'],

+ 111 - 3
app/command/Report.php

@@ -902,6 +902,7 @@ class Report extends Command
 			yield $value;
 		}
 	}
+
 	//产品部门销售业绩
 	private function Q($param=[]){
 		$where = [["is_del","=",0],["status","in",[0,1,2]]];
@@ -920,7 +921,7 @@ class Report extends Command
 		}
 	}
 
-		//采购部门销售业绩
+	//采购部门销售业绩
 	private function R($param=[]){
 		$where = [["a.is_del","=",0],["a.status","=",2],["b.is_stock","=",0]];
 		if (($param['start'] != '') && ($param['end'] != '')) $where[] = ['a.sendtime', 'between', [date("Y-m-d 00:00:00",
@@ -964,9 +965,113 @@ class Report extends Command
 		}
 	}
 	
-	//回款提成计算业绩
+	//客服部 52客服部@百辰荣达
 	private function L($param=[]){
-		$where = [["b.is_del","=",0],["a.is_del","=",0],["b.status","=",2],["b.type","=",2]];
+		$where = [["b.is_del","=",0],["a.is_del","=",0],["b.status","=",2],["b.type","=",2],["a.ownerid","in",getUidByDepartId(52)]];
+		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)  原销售单号,
+	a.goodNum 下单数量,
+	a.totalPrice 销售总额,
+	a.createdTime 销售下单时间,
+	b.updatetime 回款日期,
+	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);
+			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)]];
+		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();
+		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);
+			yield $value;
+		}
+	}
+
+	//新媒体部门  聂亚男&&新媒体业务账户
+	private function T($param=[]){
+		$where = [["b.is_del","=",0],["a.is_del","=",0],["b.status","=",2],["b.type","=",2],["a.ownerid","in",[143,152]]];
 		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")
@@ -995,6 +1100,9 @@ class Report extends Command
 	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;
 		}
 	}

+ 1 - 16
app/command/stat.php

@@ -30,7 +30,7 @@ class stat extends Command
 		foreach ($depart as $itmeid=>$depart_name){
 			$ist=Db::name("depart_everyday")->where(["depart_id"=>$itmeid,'companyNo'=>$companyNo,"day_time"=>$date])
 			                                ->findOrEmpty();
-			$uidArr =$this->getuid($itmeid);
+			$uidArr =getUidByDepartId($itmeid);
 			$sale=$this->GetData($uidArr,$companyNo,$date);
 			$zy=$this->GetData($uidArr,$companyNo,$date,1);
 			$channel=$this->GetData($uidArr,$companyNo,$date,2);
@@ -82,19 +82,4 @@ class stat extends Command
 		               ->whereDay("a.createtime",$date)->sum(Db::raw('a.th_num*b.goodPrice'));
 		return ["sale_total"=>$day_total,"th_total"=>$day_thtotal];
 	}
-
-
-
-	/**
-	 * @param $depart_id
-	 * @return array|mixed
-	 */
-	public function getuid($depart_id):array{
-		$uidArr=Cache::get("Depart_Uid_Arr_$depart_id");
-		if($uidArr==false){
-			$uidArr = Db::connect("mysql_sys")->name("account_item")->where(["itemid"=>$depart_id])->column("account_id");
-			Cache::set("Depart_Uid_Arr_$depart_id",$uidArr);
-		}
-		return $uidArr;
-	}
 }

+ 65 - 2
app/common.php

@@ -1,9 +1,8 @@
 <?php
 // 应用公共文件
-use think\facade\Config;
+use think\facade\Cache;use think\facade\Config;
 use think\facade\Db;
 use think\facade\Filesystem;
-use tp5er\thinkCsv\Export;
 // 应用公共文件
 function app_show($code=0,$message="",$data=[]){
     $result = ['code'=>$code,"message"=>$message,"data"=>$data];
@@ -703,3 +702,67 @@ if (!function_exists('check_has_account_by_supplierNos')) {
 
     }
 }
+
+if(!function_exists("getUidByDepartId")){
+	/**
+	 * @param $depart_id
+	 * @return array|mixed
+	 */
+	function getUidByDepartId($depart_id=0):array{
+		$uidArr=Cache::get("Depart_Uid_Arr_$depart_id");
+		if($uidArr==false){
+			$uidArr = Db::connect("mysql_sys")->name("account_item")->where(["itemid"=>$depart_id])->column("account_id");
+			Cache::set("Depart_Uid_Arr_$depart_id",$uidArr);
+		}
+		return $uidArr;
+	}
+}
+
+if(!function_exists("getPayRate")){
+	/**
+	 * @param $payday
+	 * @return array|mixed
+	 */
+	function getPayRate($payday=0):array{
+				$rate=0;
+			switch ($payday){
+				case 1:
+				case 2:
+				case 3:
+					$rate=1;
+					break;
+				case 4:
+					$rate=0.6;
+					break;
+				case 5:
+					$rate=0.4;
+					break;
+				default:
+					break;
+					}
+		return $rate;
+	}
+}
+
+if(!function_exists("getLadderRate")){
+	function getLadderRate($rate){
+		if($rate>=0 && $rate<10){
+			return 0;
+		}
+		if($rate>=10 && $rate<=18){
+			return 0.003;
+		}
+		if($rate>18 && $rate<=20){
+			return 0.006;
+		}
+		if($rate>20 && $rate<=25){
+			return 0.012;
+		}
+		if($rate>25 && $rate<=30){
+			return 0.02;
+		}
+		if($rate>30 ){
+			return 0.035;
+		}
+	}
+}