|
@@ -43,7 +43,7 @@ class SalaryItemPermanently extends BaseModel
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
- // 接单服务费
|
|
|
|
|
|
|
+ // 接单服务费 - 每周一次 不论等级都按 50%
|
|
|
public function salary_item_1($permanently_settlement_id,$master_worker_id,$params,$extra = [])
|
|
public function salary_item_1($permanently_settlement_id,$master_worker_id,$params,$extra = [])
|
|
|
{
|
|
{
|
|
|
try {
|
|
try {
|
|
@@ -282,8 +282,130 @@ class SalaryItemPermanently extends BaseModel
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // 全职工程师的当月基础薪资
|
|
|
|
|
+ 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??[]);
|
|
|
|
|
+ return true;
|
|
|
|
|
+ } catch (\Exception $e) {
|
|
|
|
|
+ Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 全职工程师的当月的提成
|
|
|
|
|
+ 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??[]);
|
|
|
|
|
+ return true;
|
|
|
|
|
+ } catch (\Exception $e) {
|
|
|
|
|
+ Log::info('permanently_settlement_id:'.$permanently_settlement_id.':'.$e->getFile().':'.$e->getLine().':'.$e->getMessage());
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 接单服务费 - 每月一次
|
|
|
|
|
+ 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'];
|
|
|
|
|
+ }
|
|
|
|
|
+ $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());
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -294,6 +416,7 @@ class SalaryItemPermanently extends BaseModel
|
|
|
|
|
|
|
|
public function salaryCreateUpdate($itemData = [])
|
|
public function salaryCreateUpdate($itemData = [])
|
|
|
{
|
|
{
|
|
|
|
|
+ if(empty($itemData)) return false;
|
|
|
$wh = ['permanently_settlement_id' => $itemData['permanently_settlement_id'], 'master_worker_id' => $itemData['master_worker_id'], 'term' => $itemData['term']];
|
|
$wh = ['permanently_settlement_id' => $itemData['permanently_settlement_id'], 'master_worker_id' => $itemData['master_worker_id'], 'term' => $itemData['term']];
|
|
|
$info = self::where($wh)->findOrEmpty();
|
|
$info = self::where($wh)->findOrEmpty();
|
|
|
if($info->isEmpty()){
|
|
if($info->isEmpty()){
|