|
|
@@ -43,64 +43,43 @@ class SalaryItemPermanently extends BaseModel
|
|
|
}
|
|
|
|
|
|
|
|
|
- // 接单服务费 - 每周一次 不论等级都按 50%
|
|
|
+ // 接单服务费 - 每周一次 兼职、保单 不论等级都按 50%
|
|
|
public function salary_item_1($permanently_settlement_id,$master_worker_id,$params,$extra = [])
|
|
|
{
|
|
|
try {
|
|
|
- //$params['start_time'] $params['end_time']
|
|
|
- $promotion_level = MasterWorker::where('id',$master_worker_id)->value('promotion_level');
|
|
|
- $ratio = 0.00;
|
|
|
- switch ($promotion_level){
|
|
|
- case 1:
|
|
|
- $ratio = 0.65;
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- $ratio = 0.63;
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- $ratio = 0.61;
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- $ratio = 0.59;
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- $ratio = 0.57;
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- $ratio = 0.55;
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- $ratio = 0.5;
|
|
|
- break;
|
|
|
- }
|
|
|
- //$ratio
|
|
|
- // 查询时间范围内所有已经完单的工单
|
|
|
- $order_list = ServiceWork::where('master_worker_id',$master_worker_id)->
|
|
|
- where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
- where('service_status',3)->where('work_pay_status',2)->
|
|
|
- field(['id','work_sn','work_amount','spare_total','master_worker_id','finished_time','service_status','work_pay_status'])->
|
|
|
- select()->toArray();
|
|
|
- $amount = 0.00;
|
|
|
- $spare_total = 0.00;
|
|
|
- foreach ($order_list as $item) {
|
|
|
- $amount += (float)bcsub($item['work_amount'] ,$item['spare_total']);//(float)bcmul(, $ratio,2);
|
|
|
- $spare_total += $item['spare_total'];
|
|
|
- }
|
|
|
- $term_amount = (float)bcmul($amount, $ratio,2);
|
|
|
+ if($params['period_type'] == 2 && in_array($params['master_type'],[1,2])){
|
|
|
+ //$params['start_time'] $params['end_time']
|
|
|
+ $promotion_level = MasterWorker::where('id',$master_worker_id)->value('promotion_level');
|
|
|
+ $ratio = 0.5;
|
|
|
|
|
|
- $itemData = [
|
|
|
- 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
- 'master_worker_id' => $master_worker_id,
|
|
|
- 'term' => 1,
|
|
|
- 'term_amount' => $term_amount,
|
|
|
- 'remark' => $params['item_name'].':配件总金额--'.$spare_total.': 奖励总金额--'.$term_amount.';比例:--'.$ratio,
|
|
|
- 'extra' => json_encode([
|
|
|
- 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
- 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],'promotion_level'=>$promotion_level,'ratio'=>$ratio,
|
|
|
- 'amount'=>$amount,'count_order'=>count($order_list),'order_ids'=> array_column($order_list,'id')
|
|
|
- ]),
|
|
|
- ];
|
|
|
- self::salaryCreateUpdate($itemData);
|
|
|
+ // 查询时间范围内所有已经完单的工单
|
|
|
+ $order_list = ServiceWork::where('master_worker_id',$master_worker_id)->
|
|
|
+ where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
+ where('service_status',3)->where('work_pay_status',2)->
|
|
|
+ field(['id','work_sn','work_amount','spare_total','master_worker_id','finished_time','service_status','work_pay_status'])->
|
|
|
+ select()->toArray();
|
|
|
+ $amount = 0.00;
|
|
|
+ $spare_total = 0.00;
|
|
|
+ foreach ($order_list as $item) {
|
|
|
+ $amount += (float)bcsub($item['work_amount'] ,$item['spare_total']);//(float)bcmul(, $ratio,2);
|
|
|
+ $spare_total += $item['spare_total'];
|
|
|
+ }
|
|
|
+ $term_amount = (float)bcmul($amount, $ratio,2);
|
|
|
+
|
|
|
+ $itemData = [
|
|
|
+ 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
+ 'master_worker_id' => $master_worker_id,
|
|
|
+ 'term' => 1,
|
|
|
+ 'term_amount' => $term_amount,
|
|
|
+ 'remark' => $params['item_name'].':配件总金额--'.$spare_total.': 奖励总金额--'.$term_amount.';比例:--'.$ratio,
|
|
|
+ 'extra' => json_encode([
|
|
|
+ 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
+ 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],'promotion_level'=>$promotion_level,'ratio'=>$ratio,
|
|
|
+ 'amount'=>$amount,'count_order'=>count($order_list),'order_ids'=> array_column($order_list,'id')
|
|
|
+ ]),
|
|
|
+ ];
|
|
|
+ self::salaryCreateUpdate($itemData);
|
|
|
+ }
|
|
|
return true;
|
|
|
} catch (\Exception $e) {
|
|
|
Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
|
|
|
@@ -256,6 +235,9 @@ class SalaryItemPermanently extends BaseModel
|
|
|
public function salary_item_6($permanently_settlement_id,$master_worker_id,$params,$extra = [])
|
|
|
{
|
|
|
try {
|
|
|
+ if(in_array($params['period_type'],[1,2])){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
// 查询时间范围内所有投诉的工单
|
|
|
$order_count = ReturnWork::where('master_worker_id',$master_worker_id)->
|
|
|
where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
@@ -286,26 +268,21 @@ class SalaryItemPermanently extends BaseModel
|
|
|
public function salary_item_7($permanently_settlement_id,$master_worker_id,$params,$extra = [])
|
|
|
{
|
|
|
try {
|
|
|
- // 查询时间范围内所有投诉的工单
|
|
|
- /*$order_count = ReturnWork::where('master_worker_id',$master_worker_id)->
|
|
|
- where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
- where('return_work_status','=',4)->count();
|
|
|
- $amount = 50.00;
|
|
|
- $term_amount = -(float)bcmul($order_count, $amount,2);*/
|
|
|
-
|
|
|
- /*$itemData = [
|
|
|
- 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
- 'master_worker_id' => $master_worker_id,
|
|
|
- 'term' => 6,
|
|
|
- 'term_amount' => $term_amount,
|
|
|
- 'remark' => $params['item_name'].': 扣减金额--'.$term_amount.';投诉单量:--'.$order_count,// .'xx:--'.$ranking
|
|
|
- 'extra' => json_encode([
|
|
|
- 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
- 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],
|
|
|
- 'amount'=>$amount,'order_count'=>$order_count
|
|
|
- ]),
|
|
|
- ];*/
|
|
|
- self::salaryCreateUpdate($itemData??[]);
|
|
|
+ if($params['period_type'] == 3 && $params['master_type'] == 3){
|
|
|
+ $itemData = [
|
|
|
+ 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
+ 'master_worker_id' => $master_worker_id,
|
|
|
+ 'term' => 7,
|
|
|
+ 'term_amount' => 4500,
|
|
|
+ 'remark' => $params['item_name'].': 底薪--4500',// .'xx:--'.$ranking
|
|
|
+ 'extra' => json_encode([
|
|
|
+ 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
+ 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],
|
|
|
+ 'amount'=>4500
|
|
|
+ ]),
|
|
|
+ ];
|
|
|
+ self::salaryCreateUpdate($itemData);
|
|
|
+ }
|
|
|
return true;
|
|
|
} catch (\Exception $e) {
|
|
|
Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
|
|
|
@@ -316,26 +293,38 @@ class SalaryItemPermanently extends BaseModel
|
|
|
public function salary_item_8($permanently_settlement_id,$master_worker_id,$params,$extra = [])
|
|
|
{
|
|
|
try {
|
|
|
- // 查询时间范围内所有投诉的工单
|
|
|
- /*$order_count = ReturnWork::where('master_worker_id',$master_worker_id)->
|
|
|
- where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
- where('return_work_status','=',4)->count();
|
|
|
- $amount = 50.00;
|
|
|
- $term_amount = -(float)bcmul($order_count, $amount,2);*/
|
|
|
-
|
|
|
- /*$itemData = [
|
|
|
- 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
- 'master_worker_id' => $master_worker_id,
|
|
|
- 'term' => 6,
|
|
|
- 'term_amount' => $term_amount,
|
|
|
- 'remark' => $params['item_name'].': 扣减金额--'.$term_amount.';投诉单量:--'.$order_count,// .'xx:--'.$ranking
|
|
|
- 'extra' => json_encode([
|
|
|
- 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
- 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],
|
|
|
- 'amount'=>$amount,'order_count'=>$order_count
|
|
|
- ]),
|
|
|
- ];*/
|
|
|
- self::salaryCreateUpdate($itemData??[]);
|
|
|
+ if($params['period_type'] == 3 && $params['master_type'] == 3){
|
|
|
+ // 查询时间范围内所有已经完单的工单
|
|
|
+ $order_list = ServiceWork::where('master_worker_id',$master_worker_id)->
|
|
|
+ where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
+ where('service_status','=',3)->where('work_pay_status','=',2)->
|
|
|
+ field(['id','work_sn','work_amount','spare_total','master_worker_id','finished_time','service_status','work_pay_status'])->
|
|
|
+ select()->toArray();
|
|
|
+ // 15%(单价<300 元时提成15%)至20%(单价>=300元时提成 20%)
|
|
|
+ $term_amount = 0.00;
|
|
|
+ foreach ($order_list as $item) {
|
|
|
+ if((float)$item['work_amount'] < 300){
|
|
|
+ $ratio = 0.15;
|
|
|
+ }else{
|
|
|
+ $ratio = 0.2;
|
|
|
+ }
|
|
|
+ $term_amount += (float)bcmul($item['work_amount'], $ratio,2);
|
|
|
+ }
|
|
|
+
|
|
|
+ $itemData = [
|
|
|
+ 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
+ 'master_worker_id' => $master_worker_id,
|
|
|
+ 'term' => 2,
|
|
|
+ 'term_amount' => $term_amount,
|
|
|
+ 'remark' => $params['item_name'].': 金额--'.$term_amount,
|
|
|
+ 'extra' => json_encode([
|
|
|
+ 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
+ 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],'ratio'=>$ratio,
|
|
|
+ 'amount'=>$term_amount,'count_order'=>count($order_list),'order_ids'=> array_column($order_list,'id')
|
|
|
+ ]),
|
|
|
+ ];
|
|
|
+ self::salaryCreateUpdate($itemData);
|
|
|
+ }
|
|
|
return true;
|
|
|
} catch (\Exception $e) {
|
|
|
Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
|
|
|
@@ -346,60 +335,63 @@ class SalaryItemPermanently extends BaseModel
|
|
|
public function salary_item_9($permanently_settlement_id,$master_worker_id,$params,$extra = [])
|
|
|
{
|
|
|
try {
|
|
|
- //$params['start_time'] $params['end_time']
|
|
|
- $promotion_level = MasterWorker::where('id',$master_worker_id)->value('promotion_level');
|
|
|
- $ratio = 0.00;
|
|
|
- switch ($promotion_level){
|
|
|
- case 1:
|
|
|
- $ratio = 0.65;
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- $ratio = 0.63;
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- $ratio = 0.61;
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- $ratio = 0.59;
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- $ratio = 0.57;
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- $ratio = 0.55;
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- $ratio = 0.5;
|
|
|
- break;
|
|
|
- }
|
|
|
- //$ratio
|
|
|
- // 查询时间范围内所有已经完单的工单
|
|
|
- $order_list = ServiceWork::where('master_worker_id',$master_worker_id)->
|
|
|
- where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
- where('service_status',3)->where('work_pay_status',2)->
|
|
|
- field(['id','work_sn','work_amount','spare_total','master_worker_id','finished_time','service_status','work_pay_status'])->
|
|
|
- select()->toArray();
|
|
|
- $amount = 0.00;
|
|
|
- $spare_total = 0.00;
|
|
|
- foreach ($order_list as $item) {
|
|
|
- $amount += (float)bcsub($item['work_amount'] ,$item['spare_total']);//(float)bcmul(, $ratio,2);
|
|
|
- $spare_total += $item['spare_total'];
|
|
|
+ if($params['period_type'] == 3 && $params['master_type'] == 2){
|
|
|
+ //$params['start_time'] $params['end_time']
|
|
|
+ $promotion_level = MasterWorker::where('id',$master_worker_id)->value('promotion_level');
|
|
|
+ $ratio = 0.00;
|
|
|
+ switch ($promotion_level){
|
|
|
+ case 1:
|
|
|
+ $ratio = 0.65;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ $ratio = 0.63;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ $ratio = 0.61;
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ $ratio = 0.59;
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ $ratio = 0.57;
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ $ratio = 0.55;
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ $ratio = 0.5;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ $ratio = $ratio - 0.5;
|
|
|
+ if(empty($ratio)) return false;
|
|
|
+ // 查询时间范围内所有已经完单的工单
|
|
|
+ $order_list = ServiceWork::where('master_worker_id',$master_worker_id)->
|
|
|
+ where('finished_time','between',[$params['start_time'],$params['end_time']])->
|
|
|
+ where('service_status',3)->where('work_pay_status',2)->
|
|
|
+ field(['id','work_sn','work_amount','spare_total','master_worker_id','finished_time','service_status','work_pay_status'])->
|
|
|
+ select()->toArray();
|
|
|
+ $amount = 0.00;
|
|
|
+ $spare_total = 0.00;
|
|
|
+ foreach ($order_list as $item) {
|
|
|
+ $amount += (float)bcsub($item['work_amount'] ,$item['spare_total']);//(float)bcmul(, $ratio,2);
|
|
|
+ $spare_total += $item['spare_total'];
|
|
|
+ }
|
|
|
+ $term_amount = (float)bcmul($amount, $ratio,2);
|
|
|
+
|
|
|
+ $itemData = [
|
|
|
+ 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
+ 'master_worker_id' => $master_worker_id,
|
|
|
+ 'term' => 1,
|
|
|
+ 'term_amount' => $term_amount,
|
|
|
+ 'remark' => $params['item_name'].':配件总金额--'.$spare_total.': 奖励总金额--'.$term_amount.';比例:--'.$ratio,
|
|
|
+ 'extra' => json_encode([
|
|
|
+ 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
+ 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],'promotion_level'=>$promotion_level,'ratio'=>$ratio,
|
|
|
+ 'amount'=>$amount,'count_order'=>count($order_list),'order_ids'=> array_column($order_list,'id')
|
|
|
+ ]),
|
|
|
+ ];
|
|
|
+ self::salaryCreateUpdate($itemData);
|
|
|
}
|
|
|
- $term_amount = (float)bcmul($amount, $ratio,2);
|
|
|
-
|
|
|
- $itemData = [
|
|
|
- 'permanently_settlement_id' => $permanently_settlement_id,
|
|
|
- 'master_worker_id' => $master_worker_id,
|
|
|
- 'term' => 1,
|
|
|
- 'term_amount' => $term_amount,
|
|
|
- 'remark' => $params['item_name'].':配件总金额--'.$spare_total.': 奖励总金额--'.$term_amount.';比例:--'.$ratio,
|
|
|
- 'extra' => json_encode([
|
|
|
- 'step_days'=>$params['step_days'],'item_name'=>$params['item_name'],
|
|
|
- 'start_time'=>$params['start_time'],'end_time'=>$params['end_time'],'promotion_level'=>$promotion_level,'ratio'=>$ratio,
|
|
|
- 'amount'=>$amount,'count_order'=>count($order_list),'order_ids'=> array_column($order_list,'id')
|
|
|
- ]),
|
|
|
- ];
|
|
|
- self::salaryCreateUpdate($itemData);
|
|
|
return true;
|
|
|
} catch (\Exception $e) {
|
|
|
Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
|