|
|
@ -41,12 +41,13 @@ result_array[ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract_type, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id){ |
|
|
|
function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract_type, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id) |
|
|
|
{ |
|
|
|
$bonus_array = []; |
|
|
|
if ($ver == "2.1"){ |
|
|
|
if ($ver == "2.1") { |
|
|
|
$discount = round(($fee_per_st - $commission_fee) / $elevator_list_price, 2); |
|
|
|
#契約總類($contract_type):簽長約並免費送M1 (longcontract_m1_free_charge) |
|
|
|
switch ($contract_type){ |
|
|
|
switch ($contract_type) { |
|
|
|
case "longcontract_m1_free_charge": |
|
|
|
#契約員獎金($sales_bonus) |
|
|
|
#合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) |
|
|
@ -54,57 +55,57 @@ function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract |
|
|
|
case ($discount >= 0.8): |
|
|
|
switch ($fee_per_st) { |
|
|
|
case ($fee_per_st <= 3000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.6; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.6; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 300 and $fee_per_st <= 4000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.7; |
|
|
|
break; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.7; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 4000 and $fee_per_st <= 5000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.8; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.8; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 5000 and $fee_per_st <= 6000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.9; |
|
|
|
break; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.9; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 6000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 1.0; |
|
|
|
$sales_bonus = ($fee_per_st) * 1.0; |
|
|
|
break; |
|
|
|
}; |
|
|
|
break; |
|
|
|
case ($discount >= 0.6 and $discount < 0.8): |
|
|
|
switch ($fee_per_st) { |
|
|
|
case ($fee_per_st <= 3000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.42; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.42; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 300 and $fee_per_st <= 4000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.49; |
|
|
|
break; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.49; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 4000 and $fee_per_st <= 5000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.56; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.56; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 5000 and $fee_per_st <= 6000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.63; |
|
|
|
break; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.63; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 6000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.7; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.7; |
|
|
|
break; |
|
|
|
}; |
|
|
|
break; |
|
|
|
case ($discount < 0.6): |
|
|
|
switch ($fee_per_st) { |
|
|
|
case ($fee_per_st <= 3000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.3; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.3; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 300 and $fee_per_st <= 4000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.35; |
|
|
|
break; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.35; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 4000 and $fee_per_st <= 5000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.4; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.4; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 5000 and $fee_per_st <= 6000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.45; |
|
|
|
break; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.45; |
|
|
|
break; |
|
|
|
case ($fee_per_st > 6000): |
|
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.5; |
|
|
|
$sales_bonus = ($fee_per_st) * 0.5; |
|
|
|
break; |
|
|
|
}; |
|
|
|
break; |
|
|
@ -116,81 +117,77 @@ function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract |
|
|
|
$regular_contract_manger_bonus = 300; |
|
|
|
break; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#地區處長獎金、專任契約經理、契約員獎金 |
|
|
|
switch ($payment_period_amount){ |
|
|
|
#簽長約免費贈送控制系統,因屬於公司特殊政策,所以無汰改獎金,合約期內每月領取契約獎金 |
|
|
|
#總支付期數$payment_period_amount: 總支付期數,依規定5年約至少60期, |
|
|
|
switch ($payment_period_amount) { |
|
|
|
#簽長約免費贈送控制系統,因屬於公司特殊政策,所以無汰改獎金,合約期內每月領取契約獎金 |
|
|
|
#總支付期數$payment_period_amount: 總支付期數,依規定5年約至少60期, |
|
|
|
case $payment_period_amount >= 60: |
|
|
|
#地區處長獎金 |
|
|
|
array_push($bonus_array,[ |
|
|
|
array_push($bonus_array, [ |
|
|
|
"bonus_type" => "地區處長獎金", #獎金名稱 |
|
|
|
"bonus_receiver" => $region_director_id, #發放人員 |
|
|
|
"bonus_amount" => round($region_director_bonus), #金額 |
|
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間 |
|
|
|
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 |
|
|
|
"bonus_regulation" => "訂金收回後次月發放" #發放規定 |
|
|
|
]); |
|
|
|
]); |
|
|
|
|
|
|
|
#專任契約經理獎金 |
|
|
|
array_push($bonus_array,[ |
|
|
|
array_push($bonus_array, [ |
|
|
|
"bonus_type" => "專任契約經理獎金", #獎金名稱 |
|
|
|
"bonus_receiver" => $regular_contract_manger_id, #發放人員 |
|
|
|
"bonus_amount" => round($regular_contract_manger_bonus), #金額 |
|
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間 |
|
|
|
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 |
|
|
|
"bonus_regulation" => "訂金收回後次月發放" #發放規定 |
|
|
|
]); |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
#產生契約員每個月的獎金應發比例 |
|
|
|
$payment_ratio_due_array = array(); |
|
|
|
for ($i = 0; $i < $payment_period_amount; $i++) { |
|
|
|
array_push($payment_ratio_due_array, 1/$payment_period_amount); |
|
|
|
} |
|
|
|
|
|
|
|
array_push($payment_ratio_due_array, 1 / $payment_period_amount); |
|
|
|
} |
|
|
|
|
|
|
|
$payday_due_array = array(); |
|
|
|
for ($i = 0; $i < $payment_period_amount; $i++) { |
|
|
|
array_push($payday_due_array, $i+1 ); |
|
|
|
} |
|
|
|
|
|
|
|
for($i = 0; $i < count($payment_ratio_due_array); $i++) { |
|
|
|
if($i < count($payment_ratio_due_array) - 1){ |
|
|
|
array_push($payday_due_array, $i + 1); |
|
|
|
} |
|
|
|
|
|
|
|
for ($i = 0; $i < count($payment_ratio_due_array); $i++) { |
|
|
|
if ($i < count($payment_ratio_due_array) - 1) { |
|
|
|
$current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
$current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 |
|
|
|
}; |
|
|
|
array_push($bonus_array,[ |
|
|
|
}; |
|
|
|
array_push($bonus_array, [ |
|
|
|
"bonus_type" => "契約員獎金", #獎金名稱 |
|
|
|
"bonus_receiver" => $sales_id, #發放人員 |
|
|
|
"bonus_amount" => round($current_bonus), #金額 |
|
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 |
|
|
|
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 |
|
|
|
"bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 |
|
|
|
]); |
|
|
|
} |
|
|
|
]); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$result_array = [ |
|
|
|
"ver"=>$ver, #獎金版本 |
|
|
|
"result_status"=>"success", #計算結果 |
|
|
|
"bonus_array"=>$bonus_array #獎金水庫 |
|
|
|
"ver" => $ver, #獎金版本 |
|
|
|
"result_status" => "success", #計算結果 |
|
|
|
"bonus_array" => $bonus_array #獎金水庫 |
|
|
|
]; |
|
|
|
|
|
|
|
}else{ |
|
|
|
array_push($bonus_array,[ |
|
|
|
} else { |
|
|
|
array_push($bonus_array, [ |
|
|
|
"bonus_type" => "error", #獎金名稱 |
|
|
|
"bonus_receiver" => "error", #發放人員 |
|
|
|
"bonus_amount" => 0, #金額 |
|
|
|
"pay_day_due" => "9999-1-1", #預計發放時間 |
|
|
|
"bonus_regulation" => "error" #發放規定 |
|
|
|
]); |
|
|
|
]); |
|
|
|
$result_array = [ |
|
|
|
"ver"=>$ver, #獎金版本 |
|
|
|
"result_status"=>"error", #計算結果 |
|
|
|
"bonus_array"=>$bonus_array #獎金水庫 |
|
|
|
]; |
|
|
|
"ver" => $ver, #獎金版本 |
|
|
|
"result_status" => "error", #計算結果 |
|
|
|
"bonus_array" => $bonus_array #獎金水庫 |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $result_array; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
?> |
|
|
|