You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
9.8 KiB
248 lines
9.8 KiB
<?php
|
|
/* 函數用法與參數
|
|
【1.輸入參數:】
|
|
獎金版本($ver):2.0
|
|
契約總類($contract_type):新簽約(new)、免保轉有費(free_to_charge)、續簽約(原價或僅契約金額異動)(renew_priceissue)
|
|
作番契約金額($fee_per_st):3000元/月以下、3001-3499元/月、3500-3999元/月、4000元/月以上
|
|
該作番所佔的服務費金額($commission_fee)
|
|
合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59)
|
|
簽約年數($contract_years):1年(one),超過1年(above_two)
|
|
第一筆保養款項應收回日($receivable_date_due, array)
|
|
契約員員工號($sales_id)
|
|
地區經理經理員工號($region_manger_id)
|
|
專任契約經理員工號($regular_contract_manger_id)
|
|
|
|
【2.函數中的變數說明】
|
|
契約員獎金($sales_bonus)
|
|
地區經理經理獎金($region_manager_bonus)
|
|
專任契約經理獎金($regular_contract_manger_bonus)
|
|
獎金預計發放日($payday_due)
|
|
獎金預計發放規定($payday_due_regulation):合約簽回及保養款項收回的次月一次性發
|
|
計算結果($result_status):success, error
|
|
獎金水庫(bonus_array)[
|
|
bonus_type:獎金名稱,
|
|
bonus_receiver:發放人員,
|
|
bonus_amount:金額,
|
|
pay_day_due:預計發放時間
|
|
bonus_regulation, 發放規定
|
|
]
|
|
|
|
【3.輸出數據】
|
|
result_array[
|
|
"ver"=>$ver, #獎金版本
|
|
"result_status"=>"success", #計算結果
|
|
"$bonus_array"=>$bonus_array #所有獎金水庫
|
|
];
|
|
|
|
*/
|
|
|
|
|
|
|
|
function maintenance_contract_bonus_v2_0($ver, $contract_type, $contract_years, $discount, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_manger_id, $regular_contract_manger_id){
|
|
$bonus_array = [];
|
|
if ($ver == "2.0"){
|
|
|
|
#契約總類($contract_type):新簽約(new)、免保轉有費(free_to_charge)、續簽約(原價或僅契約金額異動)(renew_priceissue)
|
|
switch ($contract_type){
|
|
case "new":
|
|
#契約員獎金($sales_bonus)
|
|
switch ($fee_per_st) {
|
|
case ($fee_per_st <= 3000):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.6;
|
|
break;
|
|
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.7;
|
|
break;
|
|
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.8;
|
|
break;
|
|
case ($fee_per_st >= 4000):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.9;
|
|
break;
|
|
};
|
|
#地區經理經理獎金($region_manager_bonus)
|
|
$region_manager_bonus = 170;
|
|
#專任契約經理獎金($regular_contract_manger_bonus)
|
|
$regular_contract_manger_bonus = 300;
|
|
break;
|
|
|
|
case "free_to_charge":
|
|
switch ($fee_per_st) {
|
|
case ($fee_per_st <= 3000):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.3;
|
|
break;
|
|
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.35;
|
|
break;
|
|
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.4;
|
|
break;
|
|
case ($fee_per_st >= 4000):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.5;
|
|
break;
|
|
};
|
|
#地區經理經理獎金($region_manager_bonus)
|
|
$region_manager_bonus = 100;
|
|
#專任契約經理獎金($regular_contract_manger_bonus)
|
|
$regular_contract_manger_bonus = 100;
|
|
break;
|
|
|
|
case "renew_priceissue":
|
|
switch ($fee_per_st) {
|
|
case ($fee_per_st <= 3000):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.25;
|
|
break;
|
|
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.3;
|
|
break;
|
|
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.35;
|
|
break;
|
|
case ($fee_per_st >= 4000):
|
|
$sales_bonus = ($fee_per_st - $commission_fee) * 0.4;
|
|
break;
|
|
};
|
|
#地區經理經理獎金($region_manager_bonus)
|
|
$region_manager_bonus = 100;
|
|
#專任契約經理獎金($regular_contract_manger_bonus)
|
|
$regular_contract_manger_bonus = 100;
|
|
break;
|
|
};
|
|
|
|
#合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59)
|
|
switch ($discount) {
|
|
case ($discount < 0.6):
|
|
$sales_bonus = $sales_bonus * 0.7;
|
|
break;
|
|
case ($discount >= 0.6 and $discount < 0.8):
|
|
$sales_bonus = $sales_bonus * 0.8;
|
|
break;
|
|
case ($discount >= 0.8):
|
|
$sales_bonus = $sales_bonus * 1.0;
|
|
break;
|
|
};
|
|
|
|
#簽約年數($contract_years):1年(1),超過1年(above)
|
|
|
|
switch ($contract_years){
|
|
case $contract_years == "one":
|
|
#契約員獎金
|
|
array_push($bonus_array,[
|
|
"bonus_type" => "契約員獎金", #獎金名稱
|
|
"bonus_receiver" => $sales_id, #發放人員
|
|
"bonus_amount" => round($sales_bonus), #金額
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
|
|
#地區經理經理獎金
|
|
array_push($bonus_array,[
|
|
"bonus_type" => "地區經理獎金", #獎金名稱
|
|
"bonus_receiver" => $region_manger_id, #發放人員
|
|
"bonus_amount" => round($region_manager_bonus), #金額
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
|
|
#專任契約經理獎金
|
|
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")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
|
|
$result_array = [
|
|
"ver"=>$ver, #獎金版本
|
|
"result_status"=>"success", #計算結果
|
|
"bonus_array"=>$bonus_array #獎金水庫
|
|
];
|
|
break;
|
|
|
|
case $contract_years == "above_two":
|
|
/*** 以下第1年獎金 ***/
|
|
#契約員獎金
|
|
array_push($bonus_array,[
|
|
"bonus_type" => "契約員獎金", #獎金名稱
|
|
"bonus_receiver" => $sales_id, #發放人員
|
|
"bonus_amount" => round($sales_bonus), #金額
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
|
|
#地區經理經理獎金
|
|
array_push($bonus_array,[
|
|
"bonus_type" => "地區經理獎金", #獎金名稱
|
|
"bonus_receiver" => $region_manger_id, #發放人員
|
|
"bonus_amount" => round($region_manager_bonus), #金額
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
|
|
#專任契約經理獎金
|
|
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")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
/*** 以上第1年獎金 ***/
|
|
|
|
/*** 以下第2年獎金 ***/
|
|
#第2年契約員獎金
|
|
array_push($bonus_array,[
|
|
"bonus_type" => "契約員獎金", #獎金名稱
|
|
"bonus_receiver" => $sales_id, #發放人員
|
|
"bonus_amount" => round($sales_bonus), #金額
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +13 months")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
|
|
#第2年地區經理經理獎金
|
|
array_push($bonus_array,[
|
|
"bonus_type" => "地區經理獎金", #獎金名稱
|
|
"bonus_receiver" => $region_manger_id, #發放人員
|
|
"bonus_amount" => round($region_manager_bonus), #金額
|
|
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +13 months")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
|
|
#第2年專任契約經理獎金
|
|
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 +13 months")), #預計發放時間
|
|
"bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定
|
|
]);
|
|
/*** 以上第2年獎金 ***/
|
|
|
|
$result_array = [
|
|
"ver"=>$ver, #獎金版本
|
|
"result_status"=>"success", #計算結果
|
|
"bonus_array"=>$bonus_array #獎金水庫
|
|
];
|
|
break;
|
|
}
|
|
}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 #獎金水庫
|
|
];
|
|
}
|
|
|
|
return $result_array;
|
|
};
|
|
|
|
|
|
?>
|
|
|