|
@@ -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);
|